linux下程序間通訊IPC幾種方式效能比較

2021-08-19 18:39:08 字數 667 閱讀 2587

在專案中,經常會遇到單機上程序間的通訊,常用的程序間通訊方式一般有以下幾種

1 socket 

2 unixsocket

3 共享記憶體(share-memory)

4 管道(pipe)

5 訊息佇列(message-queue)

6 檔案(file)

7 訊息匯流排(比如zeromq)

8 其他中介軟體(比如redis, memchache, 資料庫等)

如果專案僅僅是訊息的傳遞,對效能要求不高,則以上每種方式都可以實現程序間通訊,我們可以選擇較容易實現的方式來運用。

如果專案對訊息傳遞效能要求很高,則我們可能會選用unixsocket,file,共享記憶體,或者socket等, 具體哪種方式是最快的,效能最好的,則可能不太清楚。

所以,近日針對專案需要高效能的程序間通訊需求,對幾種通訊方式的效能進行了比較,結論如下:

效能綜合排序結果為(從好到差)

1、共享記憶體

2、zmq

3、file(noflush)

4、msgqueue

5、unixsocket

6、pipe

7、socket

8、 file(flush)

測試方式為:把一定量的資料從伺服器端發出,客戶端進行接收,最後比較總耗時,並計算每秒能夠處理的記錄數。

Linux程序間通訊 IPC

linux下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v...

Linux程序間通訊(IPC)

程序通訊有例如以下一些目的 a 傳輸資料 乙個程序須要將它的資料傳送給還有乙個程序。傳送的資料量在乙個位元組到幾m位元組之間 b 共享資料 多個程序想要操作共享資料。乙個程序對共享資料的改動,別的程序應該立馬看到。c 通知事件 乙個程序須要向還有乙個或一組程序傳送訊息。通知它 它們 發生了某種事件 ...

Linux程序 程序間通訊IPC

一 linux程序 1 程序的記憶體映像 2 解釋 bss段 在採用段式記憶體管理的架構中,bss段 bss segment 通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。資料段 在採用段式記...