1.实质
阻塞=同步
非阻塞=异步
2.只是在linux网络编程中,叫法有点不同,但含义还是差不多
整个数据包的读取过程分为两个阶段:
2.1 进程向内核空间查询网络数据包是否准备好?
2.2 若准备好,则将网络数据包从内核拷贝到用户空间
两个小阶段会发生阻塞和非阻塞过程;
两个小阶段合在一起就是一个大阶段,表示进程处理请求时获取数据的整个过程,如果此过程中有一个阶段是阻塞的,那么整个处理数据包的进程就还是同步的,只有两个小阶段都是非阻塞的,那么此进程才是异步的
所以按照两个小阶段阻塞、非阻塞和检测阻塞、非阻塞的方法,将io网络模型分为6大类:
阻塞io 都阻塞
非阻塞io 1阶段不断检测一个io状态,2阶段阻塞
io复用 1阶段不断检测多个io状态,2阶段阻塞
信号驱动io 1阶段无,二阶段阻塞
异步io 均不阻塞
链接:
https://blog.csdn.net/historyasamirror/article/details/5778378
网友评论