以下内容整理自互联网,仅用于个人学习
线程之间不存在通信,因为本来就共享同一片内存
1. 操作系统中的IPC通信
1.1 管道
是消息传递的一种特殊方式。“管道”指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。
管道
- 半双工
- 只能在具有父子关系的进程间使用
- FIFO的共享内存实现
命名管道
- 以linux中的文件的形式存在
- 不要求进程有用父子关系,甚至通过网络也是可以的
- 半双工
1.2 共享内存
存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程间的信息交换。进程一般都是独立的,要让两个进程共享空间必须通过特殊的系统调用实现。
1.3 消息传递
进程间的数据交换是以格式化的消息(Message)为单位。进程通过系统提供的发生消息和接收消息两个原语进行数据交换。
1.4 内存映射文件
允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
1.5 信号
UNIX和Linux系统响应某些条件而产生的一个事件。接受到该信号的进程会采取相应的行动。
1.6 信号量
用于管理不同进程对资源的访问,主要作为进程间的同步手段。(P、V操作,P用于等待,V用于信号)。
1.7 Socket
可以跨网络通信
2. Android的IPC
- Bundle
- 文件共享
- Messenger
- AIDL
- ContentProvider
- Socket