递归锁

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()

 




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