IO模型

在Unix下有5中IO模型

  • 同步阻塞IO
  • 同步非阻塞IO
  • IO多路复用
  • 异步IO
  • 信号驱动IO

一个输入操作通常包含两个阶段:

  1. 等待数据。等待网络中的数据分组到达,数据会被拷贝到内核缓冲区中。
  2. 获取数据。将数据从内核拷贝到进程。

第一阶段等待数据可以区分是否阻塞,第二阶段获取数据可以区分同步或异步。

根据POSIX对同步IO和异步IO的定义,在上述5种IO模型中,除了异步IO,其他都是同步IO。上述四种同步IO在第二阶段都会被阻塞。

Reference

《UNIX网络编程》