线程锁,递归锁
admin
2023-07-18 06:03:08
0

线程锁,递归锁

##线程锁应用

import time,threading
python中自己加锁了所以用不着!
def run(n):
    lock.acquire() #获取一把锁
    global  num
    num+=1
    lock.release() #释放锁

lock=threading.Lock()
num=0
loot=[] #创建一个空列表(存线程实例)
for i in range (50):
    t=threading.Thread(target=run,args=("t-%s"%i,))
    t.start()
    loot.append(t) #为了不阻塞后面的线程启动,不在这里join,先放到一个列表里

for t in loot:#循环线程实例列表,等待所有线程执行完毕
    t.join() #等待一个线程全部执行完再执行其他线程(把并程改成了串行)
print("-----ddddd-----",threading.current_thread(),threading.active_count())#看是否是主线程,活跃的线程数量
print("num:",num)

##递归锁的意思是相当于已过字典。。。每开一道门就存门对应的钥匙数据,退出时去字典找对应的门用的钥匙

def run1():
    print("grab the first part data")
    lock.acquire()
    global num
    num+=1
    lock.release()
    return num

def run2():
    print("grab the second part data")
    lock.acquire()
    global  num2
    num2+=1
    lock.release()
    return num2

def run3():
    lock.acquire()
    res=run1()
    print("----between run1 and run2-----")
    res2=run2()
    lock.release()
    print(res,res2)

num,num2=0,0
lock=threading.RLock() ##递归锁创建
for i in range(10):
    t=threading.Thread(target=run3)
    t.start()

while threading.active_count()!=1:
    print(threading.active_count())
else:
    print("------all threads done------")
    print(num,num2)

相关内容

热门资讯

我们找了全网最热门的AI写高考... 当AI遇上高考作文,会碰撞出怎样的火花?一年一度的高考作文,既是学子文笔与思想的赛场,也成为检验人工...
跑男被指“内涵”观众,别怪观众... 极目新闻评论员 纪平6月5日,综艺《奔跑吧》最新一期节目,因嘉宾台词被质疑“内涵”观众,话题“跑男还...
四川宜宾一村庄有人放生大量蛇引... 近日,关于“四川宜宾叙州区南广镇五一村红岩山有人放生大量蛇”一事引发关注,放生者发布的放蛇视频至今仍...
云南祥云通报“公立幼儿园报名要... 6月7日,云南祥云县教育体育局发布更正说明:2026年6月5日,我局下属祥城镇中心学校通过《祥云时讯...
-15%!菲律宾总统成40年来... -15%,这是菲律宾民调机构“社会气象站”近日公布的总统马科斯的净满意度,也就是说民调中对他不满意的...
原创 大... 最近两年,日本国内有个话题越吵越热,连电视台都反复拿出来讨论:那些本土辛辛苦苦培养出来的科研尖子,怎...
校企携手光影筑梦 贵州学子用影... 近日,一部名为《爱你老几》的校园温情微电影在各大短视频平台温情上线。这部影片由贵州师范大学传媒学院携...
又一位!杰出天体物理学者自美归... 【文/观察者网 柳白】一位凭借黑洞研究成果斩获北美最杰出青年科学家专项奖学金的物理学家,已经放弃美国...
今年丢准考证的高考生已出现 今天2026年高考正式开启,然而似曾相识的场景,每年都会提前出现……据武汉警方消息,6月2日晚8时1...
美国考虑动用伊朗资产,帮助海湾... 据凤凰卫视援引路透社报道,美国政府试图将伊朗资产重新分配给波斯湾国家,用于重建工作,以及修复伊朗未来...