首页 > 其他 > 详细

递归锁

时间:2020-11-07 22:00:17      阅读:30      评论:0      收藏:0      [点我收藏+]
  • 递归锁:
  互斥锁如果嵌套了多个锁之后,会将自己锁死永远都出不来了。
  这个时候可以使用递归锁,它相当于一个字典,记录了锁的门与锁的对应值,当开门的时候会根据对应来开锁。
 
技术分享图片
import threading
# run1第二道锁 def run1(): print("grab the first part data") lock.acquire() global num num +=1 lock.release() return num # run2第三道锁 def run2(): print("grab the second part data") lock.acquire() global num2 num2+=1 lock.release() return num2 # run3相当于第一道锁 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() # 循环开启10个线程 for i in range(10): t = threading.Thread(target=run3) t.start() # 如过大于1个线程就成立 while threading.active_count() != 1: # 打印当前还有多少个线程 print(threading.active_count()) else: print(‘----all threads done---‘) print(num,num2)

递归锁

原文:https://www.cnblogs.com/pyxuexi/p/13942552.html

(0)
(0)
   
举报
评论 一句话评论(0
分享档案
最新文章
教程昨日排行
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!