1 # 递归锁解决死锁现象
2 import time
3 from threading import Thread,Lock,RLock
4
5
6 def func1(lock_A,lock_B):
7 lock_A.acquire()
8 print('张全蛋拿到了A锁')
9 time.sleep(0.5)
10 lock_B.acquire()
11 print('张全蛋拿到了B锁')
12 lock_B.release()
13 lock_A.release()
14
15
16 def func2(lock_A,lock_B):
17 lock_B.acquire()
18 print('赵二狗拿到了B锁')
19 lock_A.acquire()
20 print('赵二狗拿到了A锁')
21 lock_A.release()
22 lock_B.release()
23
24
25 if __name__ == '__main__':
26
27 # lock_A = Lock()
28 # lock_B = Lock()
29 lock_A = lock_B = RLock()
30 t1 = Thread(target=func1,args=(lock_A,lock_B,))
31 t2 = Thread(target=func2,args=(lock_A,lock_B,))
32 t1.start()
33 t2.start()