死鎖和遞迴鎖

2022-04-10 16:21:58 字數 1220 閱讀 2974

from threading import

thread, 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...