進程間通訊方式+線程間通訊方式

進程間通訊

  管道(pipe):管道是一種半雙工的通訊方式,數據只能單向流動,並且只能在具備親緣關係的進程間使用進程間的親緣關係一般是指父子進程關係。編程

  命名管道(named pipe/FIFO):命名管道也是半雙工的通訊方式,可是它容許無親緣關係進程間的通訊。網絡

  信號量(semophonre):信號量是一個計數器,能夠用來控制多個進程隊共享資源的訪問。它常做爲一個鎖機制,防止某進程在訪問共享資源時,其餘進程也訪問此資源。所以,主要做爲進程間以及同一進程內不一樣線程之間的同步手段。數據結構

  消息隊列(message queue):消息隊列是由消息的鏈表,存放在內核中並由消息隊列標識符標識。消息隊列克服了信號傳遞信息少,管道只能承載無格式字節流以及緩衝區大小受限等缺點。併發

  信號(sinal):信號是一種比較複雜的通訊方式,用於通知接受進程某個事件已經發生。socket

  共享內存(shared memory):共享內存就是映射一段能被其餘進程所訪問的內存,這段共享內存由一個進程建立,但多個進程均可以訪問。共享內存是最快的ipc通訊方式,它是針對其餘進程間通訊方式運行效率低而專門設計的。它每每和其餘通訊方式如信號量,配合使用來實現進程間的同步和通訊。測試

  套接字(socket):套接字也是一種進程間通訊機制,與其餘通訊機制不一樣的是,它可用於不一樣設備間的進程通訊。線程

  全雙工管道:共享內存、信號量、消息隊列、管道和命名管道只適用於本地進程間通訊,套接字和全雙工管道可用於遠程通訊,所以可用於網絡編程。設計

  

線程間通訊

  鎖機制:包括互斥鎖、條件變量、讀寫鎖隊列

    互斥鎖:提供了以排他方式防止數據結構被併發修改的方法。進程

    讀寫鎖:容許多個線程同時共享數據,而對寫操做是互斥的。

    條件變量:能夠以原子的方式阻塞進程,直到某個特定條件爲真爲止。對條件的測試是在互斥鎖的保護下進行的。條件變量始終與互斥鎖一塊兒使用。

  信號量機制(Semaphore):包括無名進程信號量和命名線程信號量

  信號機制(Signal):相似進程間的信號處理

相關文章
相關標籤/搜索