關於執行緒注意點和互斥鎖

2021-08-24 20:31:18 字數 1324 閱讀 2583

執行緒同步能夠保證多個執行緒安全訪問競爭資源,最簡單的同步機制是引入互斥鎖。互斥鎖為資源引入乙個狀態:鎖定/非鎖定。某個執行緒要更改共享資料時,先將其鎖定,此時資源的狀態為「鎖定」,其他執行緒不能更改;直到該執行緒釋放資源,將資源的狀態變成「非鎖定」,其他的執行緒才能再次鎖定該資源。互斥鎖保證了每次只有乙個執行緒進行寫入操作,從而保證了多執行緒情況下資料的正確性。

import time 

import threading

defdemo

():for i in range(5):

print('正在寫**')

time.sleep(1)

if __name__ == '__main__':

first_thread = threading.thread(target=demo)

#(當子程序流程多餘主程序時,主程序退出的時候子程序還在執行,因此有守護主線程這個說法,當主線程退出的同時,銷毀所有的子執行緒)

first_thread.setdaemon(true)#(守護主程序)

first_thread.start()

time.sleep(2)

print('主線程退出')

exit()

全域性變數

num = 0

任務一:

def

work1

(number):

lock.acquire()#(上鎖)

global num

for i in range(number):

num += 1

print('此時num等於',num)

lock.release()#(釋放鎖)

任務二:
def

work2

(number):

lock.acquire()#(上鎖)

global num

for i in range(number):

num += 1

print('此時num等於', num)

lock.release()#(釋放鎖)

lock=threading.lock()

if __name__ == '__main__':

t1 = threading.thread(target=work1,args=(10000000,))

t2 = threading.thread(target=work2, args=(10000000,))

t1.start()#(執行緒開始)

t2.start()#(執行緒開始)

執行緒 互斥鎖

include include include include include 1.靜態初始化,當動態初始化時,遮蔽靜態初始化 pthread mutex t mutex pthread mutex initializer 2.動態初始化 pthread mutex t mutex int lock...

執行緒互斥鎖

執行緒互斥鎖 降低效率,保證資料安全 執行緒 資料共享 修改共享資料,資料不安全 from threading import thread,lock import time n 100 deftask global n temp n time.sleep 0.1 n temp 1 if name m...

關於互斥鎖

顧名思義,在多執行緒下,用來鎖定資源使用許可權。我們先看一段 include include include includeint count 0 void func void argc pthread exit null return null int main t1 t2兩個執行緒可以同時修改c...