from threading importthread, lock, rlock
import
time
'''rlock鎖 也被稱之為遞迴鎖
第乙個搶到rlock鎖的人,可以連續使用acquire,release
每acquire一次,鎖身上計數加1
每release一次,鎖身上計數減1
等鎖身上的計數為0時,其他人就可以搶鎖
'''#
mutexa = lock()
#mutexb = lock()
mutexa = mutexb =rlock()
class
mythead(thread):
def run(self): #
建立執行緒時,會自動執行run方法
self.func1()
self.func2()
deffunc1(self):
mutexa.acquire()
print('
%s 搶到了a鎖
' %self.name)
mutexb.acquire()
print('
%s 搶到了b鎖
' %self.name)
mutexb.release()
print('
%s 釋放了b鎖
' %self.name)
mutexa.release()
print('
%s 釋放了a鎖
' %self.name)
deffunc2(self):
mutexb.acquire()
print('
%s 搶到了b鎖
' %self.name)
time.sleep(1)
mutexa.acquire()
print('
%s 搶到了a鎖
' %self.name)
mutexa.release()
print('
%s 釋放了a鎖
' %self.name)
mutexb.release()
print('
%s 釋放了b鎖
' %self.name)
for i in range(10):
p =mythead()
p.start()
#自己千萬不要輕易的處理鎖的問題
執行緒死鎖和遞迴鎖
import threading import time class mythread threading.thread def a self locka.acquire 獲取鎖 print self.name,getlocka time.ctime time.sleep 3 lockb.acqui...
3 7 死鎖現象和遞迴鎖
所謂死鎖 是指兩個或兩個以上的程序或執行緒在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序,如下就是死鎖 from threading import thread,lock impor...
併發程式設計(十二) 死鎖和遞迴鎖
死鎖是一種現象 兩個及以上的程序或者執行緒在爭搶資源的過程中,出現的互相等待的現象 如果沒有外部干預,他們就一直僵持,永遠在互相等待,就 死 住了 看一下現象 from threading import thread,lock def func a,b a.acquire print a 這是fun...