跳转至

并发编程


更新于 2022-05-04

常见用途

  • 信号处理
  • 访问慢速I/O设备
  • 人机交互
  • 通过推迟工作降低延迟
  • 服务多个网络客户端
  • 多核机器上进行并行运算
  • ...

多进程

父进程接受事件(或连接),然后丢给子进程处理。

注意

  • 子进程结束后,父进程需要回收资源
  • 父进程及时关闭一些文件描述符(例如:给子进程处理的socket),避免资源泄露

优劣

  • 共享文件表,不共享地址空间
  • 需要使用IPC共享信息或交互

I/O多路复用

使用select函数,要求内核挂起进程,在一个或多个I/O事件发生后,唤醒进程。
I/O多路复用可以用作并发事件驱动程序的基础。

优劣

  • 不同逻辑流间共享数据变得简单
  • selcet可以监听的socket数量有限制
  • select会修改监听字符集,每次监听完必须重新添加
  • 需要处理每个I/O事件,编码复杂
  • 单进程内,每次只能处理一个事件

多线程