首页 > 其他分享 >线程锁的使用 lock

线程锁的使用 lock

时间:2022-12-25 12:33:53浏览次数:35  
标签:play Thread start lock args threading num 线程 使用

import threading
import time

lock = threading.Lock()

num = 0

lock = threading.Lock()

def play(name):
global num
for i in range(100):
print(f"{name}正在工作{i}")
lock.acquire()
a = num
time.sleep(0.1)
a = a+1
num = a
lock.release()


t1 = threading.Thread(target=play, args=("tom",))
t2 = threading.Thread(target=play, args=("jerry",))
t3 = threading.Thread(target=play, args=("bob",))
t4 = threading.Thread(target=play, args=("kid",))

t1.start()
t2.start()
t3.start()
t4.start()

t1.join()
t2.join()
t3.join()
t4.join()

print("res", num)

标签:play,Thread,start,lock,args,threading,num,线程,使用
From: https://blog.51cto.com/u_13137233/5968084

相关文章

  • 线程安全分析
    线程安全分析成员变量和静态变量是否线程安全?如果它们没有共享,则线程安全如果它们被共享了,根据它们的状态是否能够改变,又分两种情况如果只有读操作,则线程安全如果有......
  • GOQTTemplate3的多线程化改造
      GOQTTemplate3作为一个QT+OpenCV的平台,希望能够为使用者提供基础的跨平台的图像处理框架。图像处理算法和GUI两个线程的隔离,是必然需要的。在之前的版本中,都采用了......
  • linux网络编程-线程——通过信号控制互斥锁
    1//由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数2//gccpthread_sig_mutex.c-......
  • python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题|附代码数据
    最近我们被客户要求撰写关于MDP的研究报告,包括一些图形和统计输出。在强化学习中,我们有兴趣确定一种最大化获取奖励的策略。假设环境是马尔可夫决策过程(MDP)的理想模型,我们......
  • linux网络编程-线程创建和退出
    线程创建函数:intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg);第一个参数thread是出参,传出创建的线程......
  • Selenium - Selenium IDE的安装与使用
    before SeleniumIDE的web录制功能一直深受测试人员的喜爱,能将我们的操作动作录制下来并且能保存成相应的代码。较为方便。目前来说啊,可以有三种情况选择:谷歌商店搜索​​s......
  • TDengine 3.0的学习和使用经验
    简介:大家好,我是向阳逐梦,座右铭是向着太阳,追逐梦想。很高兴自己可以参与这次由TDengine举办的征文活动,把自己与TDengine在2022年发生的故事用文字告诉大家。2022年即将走过,T......
  • 广播 goAsync 源码分析,为什么 Google 大佬都在使用它
    hi大家好,我是DHL。公众号:ByteCode,专注有用、有趣的硬核原创内容,Kotlin、Jetpack、性能优化、系统源码、算法及数据结构、大厂面经。近期在分析问题过程中,需要反编译Goog......
  • 让人恶心的多线程代码,性能怎么优化!
    小姐姐味道(微信公众号ID:xjjdog)Java中最烦人的,就是多线程,一不小心,代码写的比单线程还慢,这就让人非常尴尬。通常情况下,我们会使用ThreadLocal实现线程封闭,比如避免SimpleD......
  • 创建和使用makefile变量
    用来代替一个文本字符串变量定义的两种方式递归展开方式VAR=var简单方式VAR:=var变量使用$(VAR)  OBJS=kang.oyul.oCC=gccCFLAGS=-Wall-O-gdavid:......