同步与异步

  在处理IO的时候阻塞与非阻塞都是同步IO,只有使用了特殊的API才是异步IO。

       

select、poll、epoll都是同步。IO多路复用又叫事件驱动。

信号驱动方式的IO也是同步的,信号只是异步通知机制,真正执行IO操作还是同步的(UNP的说法)。

在IO操作时,事件驱动和信号驱动差不多一个概念。

5种IO模型:

  1、阻塞式IO模型

  2、非阻塞式IO模型

  3、IO复用模型

  4、信号驱动式IO模型

  5、异步IO模型(调用特殊API,Linux中为aio)

前4种都是同步IO模型,第5种是异步IO模型。because the actual I/O operation (recvfrom) blocks the process.这里说的阻塞应该是说需要进程自己去读/写数据,读写的时候进程是停在这个“读写点”的,而异步IO,不需要进程自己来读,内核帮忙拷贝到用户空间,进程直接用就行,也就不会停在“读写点”上。

  只要是应用主动调用读写IO的模型都是同步IO模型。

原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9314800.html