
1、五种IO模型- 阻塞IO在内核将数据准备好之前系统调用会一直等待。所有的套接字默认都是阻塞方式。- 非阻塞IO如果内核还未将数据准备好系统调用仍然会直接返回并且返回EWOULDBLOCK错误码。⾮阻塞IO往往需要程序员循环的⽅式反复尝试读写文件描述符, 这个过程称为轮询. 这对CPU来说是较大的浪费, ⼀般只有特定场景下才使⽤.- 信号驱动IO内核将数据准备好的时候使用SIGIO信号通知应用程序进行IO操作。- IO多路转接: 虽然从流程图上看起来和阻塞IO类似. 实际上最核心在于IO多路转接能够同时等待多个文件描述符的就绪状态.- 异步IO:由内核在数据拷贝完成时, 通知应用程序(而信号驱动是告诉应用程序何时可以开始拷贝数据).