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