一、互斥與同步
1.互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。
2.同步:是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源.
3.同步是一種更為復雜的互斥,而互斥是一種特殊的同步.
二、通信與同步
進程間同步本身也是一種進程間通信(因為涉及信息的交換),當然也是一種原始的進程間通信,但同時又是更高級的進程間通信機制的基石。
對線程亦然.
三、臨界區(Critical section)與互斥體(Mutex)的區別
1、臨界區只能用于對象在同一進程里線程間的互斥訪問;互斥體可以用于對象進程間或線程間的互斥訪問。
2、臨界區是非內核對象,只在用戶態進行鎖操作,速度快;互斥體是內核對象,在核心態進行鎖操作,速度慢。
3、臨界區和互斥體在Windows平臺都下可用;Linux下只有互斥體可用。
四、linux IPC
1.經典IPC:
(1)管道、命名管道?????? //最基本最常用
(2)消息隊列、信號量、共享內存
//分為Posix IPC和System V IPC,共享存儲是運行在同一臺機器上的進程間通信最快的方式
2高級IPC: 流管道、命名流管道
(以上是限于同一臺主機的各個進程間的IPC)
3.支持不同主機上各個進程的IPC:套接口、流
五、線程間通信機制:
1.互斥鎖
2.條件變量
3.讀寫鎖
4.線程信號量
5.線程信號
?