執行緒同步概念

2021-08-26 23:35:43 字數 622 閱讀 4620

同步即協同步調,按預定的先後次序執行。

1. 資源共享(獨享資源則不會)

2. 排程隨機(意味著資料訪問會出現競爭)

3. 執行緒間缺乏必要的同步機制。

以上3點中,前兩點不能改變,欲提高效率,傳遞資料,資源必須共享。只要共享資源,就一定會出現競爭。只要存在競爭關係,資料就很容易出現混亂。

所以只能從第三點著手解決。使多個執行緒在訪問共享資源的時候,出現互斥。

舉例1: 銀行存款 5000。櫃檯,折:取3000;提款機,卡:取 3000。剩餘:2000  (存款5000,同一時間點,兩次取款分別3000,剩餘2000.)

舉例2: 記憶體中100位元組,執行緒t1欲填入全1, 執行緒t2欲填入全0。但如果t1執行了50個位元組失去cpu,t2執行,會將t1寫過的內容覆蓋。當t1再次獲得cpu繼續 從失去cpu的位置向後寫入1,當執行結束,記憶體中的100位元組,既不是全1,也不是全0。

產生的現象叫做「與時間有關的錯誤」(time related)。為了避免這種資料混亂,執行緒需要同步。

「同步」的目的,是為了避免資料混亂,解決與時間有關的錯誤。實際上,不僅執行緒間需要同步,程序間、訊號間等等都需要同步機制。

多執行緒同步概念

不管是多執行緒還是多程序,涉及到共享相同的記憶體時,需要確保好同步問題。對執行緒來說,需要確保每個執行緒看到一致的資料檢視。如果每個執行緒使用的變數都是其他執行緒不會讀取和修改的,那麼就不存在一致性問題,同樣的,如果變數是唯讀的,多個執行緒同時讀取該變數也不會有一致性問題。但是如果其中的某個執行緒去...

7 1 同步的概念與執行緒同步

1 同步概念 所謂同步,即同時起步,協調一致。不同的物件,對 同步 的理解方式略有不同。例如 1 裝置同步,是指在兩個裝置之間規定乙個共同的時間參考 2 資料庫同步,是指讓兩個或多個資料庫內容保持一致,或者按需要部分保持一致 3 檔案同步,是指讓兩個或多個資料夾裡的檔案保持一致。4 程式設計中 通訊...

多執行緒同步 鎖的概念

import time import threading num 0 定義乙個全域性變數 tolock threading.lock 建立一把鎖 class mythread threading.thread 繼承threading模組的thread方法 def run self 對父類重寫 glo...