IPC通信方式

以下內(nèi)容整理自互聯(lián)網(wǎng),僅用于個(gè)人學(xué)習(xí)


線程之間不存在通信,因?yàn)楸緛?lái)就共享同一片內(nèi)存

1. 操作系統(tǒng)中的IPC通信

1.1 管道

是消息傳遞的一種特殊方式。“管道”指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程以實(shí)現(xiàn)它們之間通信的一個(gè)共享文件,又名pipe文件。

管道

  • 半雙工
  • 只能在具有父子關(guān)系的進(jìn)程間使用
  • FIFO的共享內(nèi)存實(shí)現(xiàn)

命名管道

  • 以linux中的文件的形式存在
  • 不要求進(jìn)程有用父子關(guān)系,甚至通過(guò)網(wǎng)絡(luò)也是可以的
  • 半雙工

1.2 共享內(nèi)存

存在一塊可直接訪問(wèn)的共享空間,通過(guò)對(duì)這片共享空間進(jìn)行寫/讀操作實(shí)現(xiàn)進(jìn)程間的信息交換。進(jìn)程一般都是獨(dú)立的,要讓兩個(gè)進(jìn)程共享空間必須通過(guò)特殊的系統(tǒng)調(diào)用實(shí)現(xiàn)。

1.3 消息傳遞

進(jìn)程間的數(shù)據(jù)交換是以格式化的消息(Message)為單位。進(jìn)程通過(guò)系統(tǒng)提供的發(fā)生消息和接收消息兩個(gè)原語(yǔ)進(jìn)行數(shù)據(jù)交換。

1.4 內(nèi)存映射文件

允許任何多個(gè)進(jìn)程間通信,每一個(gè)使用該機(jī)制的進(jìn)程通過(guò)把一個(gè)共享的文件映射到自己的進(jìn)程地址空間來(lái)實(shí)現(xiàn)它。

1.5 信號(hào)

UNIX和Linux系統(tǒng)響應(yīng)某些條件而產(chǎn)生的一個(gè)事件。接受到該信號(hào)的進(jìn)程會(huì)采取相應(yīng)的行動(dòng)。

1.6 信號(hào)量

用于管理不同進(jìn)程對(duì)資源的訪問(wèn),主要作為進(jìn)程間的同步手段。(P、V操作,P用于等待,V用于信號(hào))。

1.7 Socket

可以跨網(wǎng)絡(luò)通信

2. Android的IPC

  • Bundle
  • 文件共享
  • Messenger
  • AIDL
  • ContentProvider
  • Socket
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容