跳到主要内容

基于进程与 I/O 多路复用的并发

基于进程的并发怎样工作?​

  • 流程: 父进程接受请求, 为每个请求创建子进程提供服务;
  • 共享: 父子进程共享文件表, 但不共享用户地址空间;
  • 代价: 进程之间通信必须使用 IPC 机制, 开销大;

I/O 多路复用是什么?​

  • 机制: 内核挂起进程, 等到若干个 I/O 事件发生之后, 再把控制返回给应用程序;
  • 用途: 让单进程可以同时等待多个描述符, 从而处理多个连接;

事件驱动并发怎样把逻辑流写成状态机?​

  • 状态机: 一组状态、输入事件和转移的集合;
  • 转移: 把「当前状态, 输入事件」映射到输出状态;
  • 并发方式: 用 I/O 多路复用等待描述符可读, 可读时驱动对应状态机做一次转移;

并发事件驱动

事件驱动的优缺点是什么?​

  • 优势: 运行在单一进程上下文中, 每个逻辑流都能访问该进程的全部地址空间;
  • 缺点: 需要把逻辑流改写成状态机, 代码复杂;