1. 程式人生 > >細說linux IPC(十一):各種IPC形式比較總結(完)

細說linux IPC(十一):各種IPC形式比較總結(完)

        我們這一系列沒有講述訊號燈相關內容,是因為訊號燈是程序間以及同一程序不同執行緒之間的一種同步方式,我們這一系列把精力主要放在程序之間資訊的互動上面,而同步與互斥的內容放在另一個系列,這樣更便於知識的細化歸類,各個擊破。其實同步與互斥是程序間通訊的一個很重要的內容,所以我們會立即在下一個系列詳細講解同步與互斥的內容。
下面分析一下我們這一系列文章各種IPC的特點:

1. socket
        a、使用socket通訊的方式實現起來簡單,可以使用因特網域和UNIX域來實現,使用因特網域可以實現不同主機之間的進出通訊。
        b、該方式自身攜帶同步機制,不需要額外的方式來輔助實現同步。
        c、隨程序持續。
2. 共享記憶體
        a、最快的一種通訊方式,多個程序可同時訪問同一片記憶體空間,相對其他方式來說具有更少的資料拷貝,效率較高。
        b、需要結合訊號燈或其他方式來實現多個程序間同步,自身不具備同步機制。
        c、隨核心持續,相比於隨程序持續生命力更強。
3. 管道
        a、較早的一種通訊方式,缺點明顯:只能用於有親緣關係程序之間的通訊;只支援單向資料流,如果要雙向通訊需要多建立一個管道來實現。
        b、自身具備同步機制。
        c、隨程序持續。
4. FIFO
        a、是有名管道,所以支援沒有親緣關係的程序通訊。和共享記憶體類似,提供一個路徑名字將各個無親緣關係的程序關聯起來。但是也需要建立兩個描述符來實現雙向通訊。
        b、自身具備同步機制。
        c、隨程序持續。
5. 訊號
        a、這種通訊可攜帶的資訊極少。不適合需要經常攜帶資料的通訊。
        b、不具備同步機制,類似於中斷,什麼時候產生訊號,程序是不知道的。
6. 訊息佇列
        a、與共享記憶體和FIFO類似,使用一個路徑名來實現各個無親緣關係程序之間的通訊。訊息佇列相比於其他方式有很多優點:它提供有格式的位元組流,減少了開發人員的工作量;訊息具有型別(system V)或優先順序(posix)。其他方式都沒有這些優點。
        b、具備同步機制。
        c、隨核心持續。

這個系列就這樣完了,時間倉促,做程式設計師的苦逼日子時間就是那麼的有限,分析不是特別深入,淺嘗輒止而已,也難免有所錯誤。期待下一個同步與互斥系列。。。。。。
--------------------- 
作者:shallnet 
來源:CSDN 
原文:https://blog.csdn.net/shallnet/article/details/41826791 
版權宣告:本文為博主原創文章,轉載請附上博文連結!