python之路 :執行緒鎖
阿新 • • 發佈:2019-01-22
執行緒鎖:
當多個執行緒同時進行任務時,為保證不會有多個執行緒對同一個資料進行操作造成不可預料的後果,加個鎖,將此時的線 程變為單執行緒進行操作。
threading_Lock()
四個狀態:1、獲取鎖、上鎖:acquire()
2、等待:wait()
3、解鎖:release()
4、喚醒、喚醒全部:notify()、notify_all()
當多個執行緒同時執行lock.acquire時,只有一個執行緒能成功地獲取鎖,然後繼續執行程式碼,其他執行緒就繼續等待直到獲得 鎖為止。
獲得鎖的執行緒用完後一定要釋放鎖,否則那些苦苦等待鎖的執行緒將永遠等待下去,成為死執行緒。
執行緒鎖的好處與壞處:
好處:確保了某一段斷碼只能有一個執行緒從頭到尾完整的執行。
壞處:首先是阻止了多執行緒的多發執行,包含鎖的某段程式碼實際上只能以單執行緒模式執行,效率就大大的降低。
其次由於可以存在多個鎖,不同執行緒存在不同的鎖,並試圖獲取對方持有的鎖時,可能會造成鎖死,導致多個 執行緒全部掛起,既不能執行也不能結束,只能靠作業系統強制終止。