博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归锁
阅读量:4641 次
发布时间:2019-06-09

本文共 827 字,大约阅读时间需要 2 分钟。

from threading import Thread,RLockimport timemutexA=mutexB=RLock() #一个线程拿到锁,counter加1,该线程内又碰到加锁的情况,则counter继续加1,  #这期间所有其他线程都只能等待,等待该线程释放所有锁,即counter递减到0为止class MyThread(Thread):    def run(self):        self.func1()        self.func2()    def func1(self):        mutexA.acquire()        print('\033[41m%s 拿到A锁\033[0m' %self.name)        mutexB.acquire()        print('\033[42m%s 拿到B锁\033[0m' %self.name)        mutexB.release()        mutexA.release()    def func2(self):        mutexB.acquire()        print('\033[43m%s 拿到B锁\033[0m' %self.name)        time.sleep(2)        mutexA.acquire()        print('\033[44m%s 拿到A锁\033[0m' %self.name)        mutexA.release()        mutexB.release()if __name__ == '__main__':    for i in range(10):        t=MyThread()        t.start()

 

转载于:https://www.cnblogs.com/yelublue/p/9123246.html

你可能感兴趣的文章
SOC CPU
查看>>
get_result --perl
查看>>
163镜像地址
查看>>
ehcache memcache redis 三大缓存男高音
查看>>
eclipse 快捷键Open Implementation 直接退出
查看>>
minix中管道文件和设备文件的读写
查看>>
JAXB - Annotations, Annotations for Enums: XmlEnum, XmlEnumValue
查看>>
context 插图
查看>>
文件管理器中不支持的wma歌曲也显示可以播放的音乐图标
查看>>
Java基础学习-流程控制语句
查看>>
Shell中read的常用方式
查看>>
01javascript数据类型
查看>>
asp.net实现md5加密方法详解
查看>>
AJAX
查看>>
table 的thead th 固定 tbody滚动例子
查看>>
并行计算思考----回溯法求解数独问题
查看>>
设计模式:模板模式
查看>>
和菜鸟一起学OK6410之ADC模块
查看>>
代理 模式
查看>>
[git] 细说commit (git add/commit/diff/rm/reset 以及 index 的概念)
查看>>