執行緒競爭與同步

2022-06-05 09:36:07 字數 841 閱讀 3622

背景介紹:

在多執行緒的環境裡,如果共享資源沒有上鎖,將會出現共享資料混亂的情況。

在單核cpu系統裡,系統以時間片排程的方式讓多個程式輪流使用處理器,造成了【併發】的假象。

在程序/執行緒併發執行的過程中,程序/執行緒之間存在協作的關係,比如互斥、同步。 

什麼叫程序互斥

兩個或兩個以上的程序,不能同時進入關於同一組共享變數的臨界區域,否則可能發生與實踐有關的錯誤,這種現象叫程序互斥。

作業系統如何實現程序/執行緒互斥:

訊號量:表示資源的數量,對應的變數是乙個sem變數。由兩個原子操作pv的系統呼叫函式控制訊號量(pv必須成對出現):

通過互斥訊號量方式,能保證臨界區任何時刻只有乙個執行緒在執行,達到了互斥效果。    

什麼叫程序同步?

非同步環境下的一組併發程序因直接制約而互相傳送訊息、相互合作、相互等待,使得程序按一定的速度執行的過程稱為程序間的同步。具有同步關係的一組併發程序叫合作程序。

使用pv訊號量實現程序同步的演示流程如下:

以上參考:

執行緒與同步

系統中的執行緒與程序 程序包含window控制代碼,檔案系統和其他核心物件等,每個程序系統都會分配乙個虛擬記憶體,每個程序最少有乙個執行緒。執行緒是執行程式必須的獨立的指令流,執行緒也有自己的堆疊 記憶體 應用程式的記憶體和堆由乙個程序中的所有執行緒共享,所引線程之間的交換非常快,但是由於他們共享所...

執行緒基礎與執行緒同步

二 執行緒同步 我們都知道,程序是運轉中的程式,是為了在cpu上實現多道程式設計而發明的乙個概念。但是程序在乙個時間只能幹一件事情,如果想要同時幹兩件或者多件事情,例如同時看兩場電影,我們自然會想到傳說中的分身術,就像孫悟空那樣可以變出多個真身。雖然我們在現實中無法分身,但程序卻可以辦到,辦法就是執...

執行緒安全與執行緒同步

執行緒安全 可重入函式 執行緒之間共享全域性資料段 靜態資料,引起非執行緒安全。執行緒安全可以通過執行緒同步對臨界資源訪問進行控制來實現。有些系統呼叫或者庫函式的實現時發生不安全現象,在多執行緒環境下就需要使用這些函式的安全版本,即可重入函式。例如 字串分割函式 普通版本 char strtok c...