并发编程¶
更新于 2022-05-04
常见用途¶
- 信号处理
- 访问慢速I/O设备
- 人机交互
- 通过推迟工作降低延迟
- 服务多个网络客户端
- 多核机器上进行并行运算
- ...
多进程¶
父进程接受事件(或连接),然后丢给子进程处理。
注意¶
- 子进程结束后,父进程需要回收资源
- 父进程及时关闭一些文件描述符(例如:给子进程处理的socket),避免资源泄露
优劣¶
- 共享文件表,不共享地址空间
- 需要使用IPC共享信息或交互
I/O多路复用¶
使用select函数,要求内核挂起进程,在一个或多个I/O事件发生后,唤醒进程。
I/O多路复用可以用作并发事件驱动程序的基础。
优劣¶
- 不同逻辑流间共享数据变得简单
- selcet可以监听的socket数量有限制
- select会修改监听字符集,每次监听完必须重新添加
- 需要处理每个I/O事件,编码复杂
- 单进程内,每次只能处理一个事件