python的重入鎖(簡單說明)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章