递归锁

Posted yelublue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归锁相关的知识,希望对你有一定的参考价值。

from threading import Thread,RLock
import time

mutexA=mutexB=RLock()

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

 




以上是关于递归锁的主要内容,如果未能解决你的问题,请参考以下文章

C:如何使用POSIX线程声明递归互斥锁?

并发编程——GIL全局解释器锁死锁现象与递归锁信号量Event事件线程queue

JavaScript - 代码片段,Snippets,Gist

Python入门学习-DAY36-GIL全局解释器锁死锁现象与递归锁信号量Event事件线程queue

同步锁(互斥锁),GIL锁(解释器层面的锁),死锁与递归锁

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段