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