全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

互斥鎖是什么?互斥鎖的具體使用步驟

更新時(shí)間:2023-11-03 來(lái)源:黑馬程序員 瀏覽量:

互斥鎖是對(duì)共享數(shù)據(jù)進(jìn)行鎖定,保證同一時(shí)刻只能有一個(gè)線(xiàn)程去操作。可以理解為多個(gè)線(xiàn)程一起搶鎖,搶到鎖的線(xiàn)程先執(zhí)行,沒(méi)有搶到鎖的線(xiàn)程需要等待,等互斥鎖使用完釋放后,其它等待的線(xiàn)程再去搶這個(gè)鎖。

threading模塊中定義了Lock變量,這個(gè)變量本質(zhì)上是一個(gè)函數(shù),通過(guò)調(diào)用這個(gè)函數(shù)可以獲取一把互斥鎖?;コ怄i使用步驟如下:

# 創(chuàng)建鎖
mutex = threading.Lock()

# 上鎖
mutex.acquire()

...這里編寫(xiě)代碼能保證同一時(shí)刻只能有一個(gè)線(xiàn)程去操作, 對(duì)共享數(shù)據(jù)進(jìn)行鎖定...# 釋放鎖mutex.release()

# 釋放鎖
mutex.release()

注意點(diǎn):acquire和release方法之間的代碼同一時(shí)刻只能有一個(gè)線(xiàn)程去操作

如果在調(diào)用acquire方法的時(shí)候 其他線(xiàn)程已經(jīng)使用了這個(gè)互斥鎖,那么此時(shí)acquire方法會(huì)堵塞,直到這個(gè)互斥鎖釋放后才能再次上鎖。


分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!