Linux -- 進程間通信幾種方式的總結

一、 管道


優點:

1. 管道文件不佔磁盤空間,打開管道時在內存中分配空間;

2. 管道讀端會在讀取完管道內數據後自動進入阻塞,直到寫端再次寫入數據;

缺點:

1. 管道是半雙工的,數據只能從一個方向上流動;

2. 管道大小PIPE_SIZE限制爲64k;


二、 共享內存


優點:

1. 共享內存是最快的一種IPC,因爲客戶端和服務器共享一塊給定的存儲區,不需要在之間複製;

2. 共享內存可以讓多個進程同時共享一個存儲空間;

3. 共享內存大小沒有上限,也不存在單向的限制;

缺點:

1. 共享內存中並未提供同步機制,多個進程同時訪問空間時需要信號量進行同步;


三、 消息隊列


優點:

1. 消息隊列獨立於進程之外,進程退出後數據仍存在隊列中;

2. 消息隊列提供類型字段,不同進程可按消息的類型字段接收消息;

缺點:

1. Linux下一個消息隊列的最大字節數爲16k,系統中最多存在16個消息隊列;

2. 消息隊列中沒有設置引用計數器,刪除一個消息隊列後仍使用這個隊列的進程會在下次對隊列操作時發生錯誤退出;

3. 消息隊列在使用完後需要手動刪除;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章