以下內(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