進程間通訊方式及區別

1. 管道pipe
   一般不用匿名管道做進程通信,使用2
2. 命名管道FIFO
   推薦使用,和socket相比,不佔用端口號,雖然也支持不同機器通信,但一般只用於本機進程通信,支持數據雙向或單向傳輸
3. 內存映射MemoryMapping
   適用於共享數據的情況,與管道和socket相比,缺點是不能被動得到通知,只能主動去訪問共享數據。假如有A,B兩個進程,A修改或讀取共享內存的數據,B並不能知道,B只能通過自己主動去訪問共享內存,得知數據變化。而管道和socket,A可以向B發送數據,B能夠立即知道,反過來也一樣
4. 消息隊列MessageQueue
   沒用過
5. 共享存儲SharedMemory
   和3相似
6. 信號量Semaphore
   一般只用於進程或線程同步
7. 套接字Socket
   和管道相比,缺點是佔用端口號,優點是適合不同機器間通信,最常見的例子就是遠程控制工具

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