更新時間:2023-11-03 來源:黑馬程序員 瀏覽量:
互斥鎖是對共享數(shù)據(jù)進行鎖定,保證同一時刻只能有一個線程去操作??梢岳斫鉃槎鄠€線程一起搶鎖,搶到鎖的線程先執(zhí)行,沒有搶到鎖的線程需要等待,等互斥鎖使用完釋放后,其它等待的線程再去搶這個鎖。
threading模塊中定義了Lock變量,這個變量本質上是一個函數(shù),通過調用這個函數(shù)可以獲取一把互斥鎖。互斥鎖使用步驟如下:
# 創(chuàng)建鎖
mutex = threading.Lock()
# 上鎖
mutex.acquire()
...這里編寫代碼能保證同一時刻只能有一個線程去操作, 對共享數(shù)據(jù)進行鎖定...# 釋放鎖mutex.release()
# 釋放鎖
mutex.release()
注意點:acquire和release方法之間的代碼同一時刻只能有一個線程去操作
如果在調用acquire方法的時候 其他線程已經使用了這個互斥鎖,那么此時acquire方法會堵塞,直到這個互斥鎖釋放后才能再次上鎖。