python 重入锁
重入锁就是可以多次获取的锁.(条件是在同一线程下) 对应的是threading.RLock
。普通的锁是threading.Lock
,这个锁在同一线程下 未释放的情况下再次获取会造成死锁,所以就需要RLock
如下:
普通情况下 会死锁
import threading
lock = threading.Lock()
with lock:
print "first get lock!"
with lock:
print "second get lock !"
# 这种情况下只会输出 'first get lock!',
# 并且程序在不强制中断的情况下始终阻塞在 第二次获取锁的位置
怎么办?
改成下面这种情况就可以了!
import threading
lock = threading.RLock()
# ...