84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
在python的多线程中,使用threading中的lock rlock锁, 为何rlock可以调用多次acquire,lock缺不能,lock调用多次而且会发生死锁,rlock不会,求大神指点下
闭关修行中......
rlock是可重入鎖,你可以簡單的理解它自帶一個計數器,acquire則計數器+1,release則計數器-1.不可出現負值,否則會跑出異常。
為什麼要這麼做呢,因為應用場景不同,可重入鎖可以呼叫另外一個需要該鎖的方法,而不可重入鎖是不能這麼做的。
def fun1(): rlock.acquire() fun2() rlock.release() def fun2(): rlock.acquire() rlock.release()
lock與rlock的差別在於r: reentrant,可重複進入,一個線程可以多次獲取同一個rlock而不被block,一個線程如果多次獲取了rlock,那就要release相同的次數才可以釋放這個rlock。
lock則不一樣,只能被獲取一次,在被釋放之前,不能再被獲取。
更多的可以參考這個回答:http://stackoverflow.com/ques...
rlock是可重入鎖,你可以簡單的理解它自帶一個計數器,acquire則計數器+1,release則計數器-1.不可出現負值,否則會跑出異常。
為什麼要這麼做呢,因為應用場景不同,可重入鎖可以呼叫另外一個需要該鎖的方法,而不可重入鎖是不能這麼做的。
lock與rlock的差別在於r:
reentrant,可重複進入,一個線程可以多次獲取同一個rlock而不被block,一個線程如果多次獲取了rlock,那就要release相同的次數才可以釋放這個rlock。
lock則不一樣,只能被獲取一次,在被釋放之前,不能再被獲取。
更多的可以參考這個回答:
http://stackoverflow.com/ques...