執行緒死鎖和遞迴鎖

2022-09-11 12:33:21 字數 1223 閱讀 6858

import threading

import time

class mythread(threading.thread):

def a(self):

locka.acquire() #獲取鎖

print(self.name,"getlocka",time.ctime())

time.sleep(3)

lockb.acquire()

print(self.name,"getlockb",time.ctime())

lockb.release() #釋放鎖

locka.release()

def b(self):

lockb.acquire()

print(self.name,"getlockb",time.ctime())

time.sleep(2)

locka.acquire()

print(self.name,"getlocka",time.ctime())

locka.release()

lockb.release()

def run(self):

self.a()

self.b()

if __name__=="__main__":

locka=threading.lock()

lockb=threading.lock()

threads=

def b(self):

lock.acquire()

print(self.name,"getlockb",time.ctime())

time.sleep(2)

lock.acquire()

print(self.name,"getlocka",time.ctime())

lock.release()

lock.release()

def run(self):

self.a()

self.b()

if __name__=="__main__":

# locka=threading.lock()

# lockb=threading.lock()

lock=threading.rlock() #建立遞迴鎖

threads=

"""對於a方法,當獲取到大鎖的時候,再去獲取小鎖,然後分別釋放小鎖和大鎖完畢以後,所有執行緒都會去搶獲取鎖的資源,誰先搶到,哪個執行緒則會進行執行

死鎖和遞迴鎖

from threading import thread,lock,rlock import time rlock鎖 也被稱之為遞迴鎖 第乙個搶到rlock鎖的人,可以連續使用acquire,release 每acquire一次,鎖身上計數加1 每release一次,鎖身上計數減1 等鎖身上的計數為...

7 3 7 併發多執行緒 死鎖和遞迴鎖

所謂死鎖 是指兩個或兩個以上的程序或執行緒在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序,如下就是死鎖 from threading import thread,lock impor...

3 7 死鎖現象和遞迴鎖

所謂死鎖 是指兩個或兩個以上的程序或執行緒在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序,如下就是死鎖 from threading import thread,lock impor...