进程间通信IPC
方式 | 说明 | 优点 | 缺点 |
---|---|---|---|
管道 | 半双工的通信方式 | 有名管道可无亲缘进程通信 | 只能承载无格式字节流,只能单向传输,管道只能亲缘进程通信 |
信号量 | 信号量是一个计数器,控制多进程并发访问(锁机制) | 锁、条件变量等 | 只使用并发同步,不适合数据传递 |
信号 | 通知接收进程某个事件已经发生 | 信号通知 | 传递信息少 |
共享内存 | 通过共享内容,实现数据传递 | 最快的 IPC 方式 | |
消息队列 | 链表,存放在内核中并由消息队列标识符标识 | 传递信息多 | |
socket | 网络套接字 | 跨主机通信 |
线程
- 多进程中每个进程有自己的地址空间,线程则共享地址空间;
- 线程是处理器调度的基本单位,进程是资源分配的单位;
- 同一进程的线程共享地址空间,没有通信的必要,但要做好同步/互斥,保护共享的全局变量;
- 通信方式:包括互斥锁、条件变量、读写锁
协程
通信方式 | 说明 |
---|---|
互斥锁 | mutex |
条件变量 | cond |
读写锁 | 读写互斥,在读多写少,提高锁性能 |
管道 | channel FIFO 消息队列 |
context | 多协诚同步 |