|面试官问我Linux的网络IO模式怎么办?( 三 )


前面不够细心的小伙伴可能会问了
为什么「非阻塞 I/O」是同步I/O呢?
仔细看「非阻塞 I/O」的流程图
当内核的数据准备好后 , 用户进程再次询问时 , 数据开始从内核空间拷贝到用户空间 。 这个过程中用户进程是阻塞的 , 只有当拷贝完成 , 内核返回完成信号 , 进程才会继续运行 。
所以 , 不管是「阻塞 I/O」还是「非阻塞 I/O」都是会发生阻塞
不同的是 , 「阻塞 I/O」在数据准备阶段和从内核空间拷贝到用户空间阶段都会阻塞 , 「非阻塞 I/O」只有在拷贝阶段会阻塞 。
作者:方木Rudy链接:https://juejin.im/post/5ece31e6e51d4578a51f7bf4


推荐阅读