多工同步與互斥概念
現代作業系統基本都是多工作業系統,即同時有大量可排程實體在執行。在多工作業系統中,同時執行的多個任務可能:
都需要訪問/使用同一種資源
多個任務之間有依賴關係,某個任務的執行依賴於另一個任務
這兩種情形是多工程式設計中遇到的最基本的問題,也是多工程式設計中的核心問題,同步和互斥就是用於解決這兩個問題的。
接下來,來看一下同步與互斥的基本概念:
互斥: 是指散步在不同任務之間的若干程式片斷,當某個任務執行其中一個程式片段時,其它任務就不能執行它們之中的任一程式片段,只能等到該任務執行完這個程式片段後才可以執行。最基本的場景就是:一個公共資源同一時刻只能被一個程式或執行緒使用,多個程式或執行緒不能同時使用公共資源。
同步: 是指散步在不同任務之間的若干程式片斷,它們的執行必須嚴格按照規定的某種先後次序來執行,這種先後次序依賴於要完成的特定的任務。最基本的場景就是:兩個或兩個以上的程式或執行緒在執行過程中協同步調,按預定的先後次序執行。比如 A 任務的執行依賴於 B 任務產生的資料。
顯然, 同步是一種更為複雜的互斥,而互斥是一種特殊的同步 。也就是說互斥是兩個任務之間不可以同時執行,他們會相互排斥,必須等待一個執行緒執行完畢,另一個才能執行,而同步也是不能同時執行,但他是必須要安照某種次序來執行相應的執行緒(也是一種互斥)!因此互斥具有唯一性和排它性,但互斥並不限制任務的執行順序,即任務是無序的,而同步的任務之間則有順序關係。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69914734/viewspace-2657964/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談程式同步和互斥的概念
- 執行緒同步與互斥:互斥鎖執行緒
- windows多執行緒同步--互斥量Windows執行緒
- windows多執行緒同步互斥--總結Windows執行緒
- Python 執行緒同步與互斥Python執行緒
- 透過互斥鎖+條件量的方式實現同步與互斥
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- Java多執行緒—執行緒同步(單訊號量互斥)Java執行緒
- c++實現程式與執行緒的同步互斥C++執行緒
- 用訊號量解決程式的同步與互斥探討
- 互斥與獨立
- python多執行緒程式設計3: 使用互斥鎖同步執行緒Python執行緒程式設計
- 非同步/同步,阻塞/非阻塞,單執行緒/多執行緒概念梳理非同步執行緒
- 物聯網學習教程——執行緒同步與互斥:讀寫鎖執行緒
- 執行緒同步(windows平臺):互斥物件執行緒Windows物件
- notion的文字嵌入與同步塊設計概念
- linux多執行緒-----同步機制(互斥量、讀寫鎖、條件變數)Linux執行緒變數
- Android ContentProvider支援跨程式資料共享與"互斥、同步" 雜談AndroidIDE
- 核心中的同步和互斥分析報告(轉)
- 看完了程式同步與互斥機制,我終於徹底理解了 PV 操作
- JSRE中的多工與多執行緒JS執行緒
- Dart 非同步與多執行緒Dart非同步執行緒
- linux多執行緒-----同步物件(互斥量、讀寫鎖、條件變數)的屬性Linux執行緒物件變數
- 作業系統——程序同步互斥經典題目作業系統
- 多執行緒與併發----Semaphere同步執行緒
- Linux下關於互斥鎖及同步的移植(一)Linux
- Linux下關於互斥鎖及同步的移植(二)Linux
- 那些年搞不懂的多執行緒、同步非同步及阻塞和非阻塞(二)---概念區分執行緒非同步
- 多程式之間的執行緒利用XSI IPC共享記憶體分配互斥量進行同步執行緒記憶體
- 並行多工學習論文閱讀(二)同步和非同步優化演算法並行非同步優化演算法
- Java高併發與多執行緒(一)-----概念Java執行緒
- Go併發程式設計之傳統同步—(1)互斥鎖Go程式設計
- 作業系統實驗3 經典同步互斥問題作業系統
- Linux下關於互斥鎖及同步的移植(一)薦Linux
- 多工原理
- Linux多執行緒的使用一:互斥鎖Linux執行緒
- C#多執行緒學習(六) 互斥物件C#執行緒物件
- C# 多執行緒學習(6) :互斥物件C#執行緒物件