美文网首页
IO多路复用为什么会使用非阻塞IO

IO多路复用为什么会使用非阻塞IO

作者: rsliumin1994 | 来源:发表于2018-05-08 19:27 被阅读0次

在上面两个问题中,题主认为,基于select对套接字进行监测时,如果返回,说明存在数据可读,read不会被阻塞,不需要使用unblocking IO?

select和read两个操作相互独立且存在窗口,select返回可读并不能保证read一定可读,存在多种情况,select返回可读,但是read无数据可读
  • 多进程同时对某个socket进行监听,当新的连接完成3次握手后,进程均被select,epoll唤醒,但是最后只有1个进程可以accept,没能accept的进程被block
  • 某个socket接收缓冲区有新数据分节到达,然后select报告这个socket描述符可读,但随后,协议栈检查到这个新分节检验和错误,然后丢弃这个分节,这时候调用read则无数据可读
  • 边缘触发环境,由于无法知道多少数据可读,所以accept1次后,第二次尝试accept可能会被阻塞,此时应该使用非阻塞IO

相关文章

  • IO多路复用为什么会使用非阻塞IO

    Question from 知乎(链接如下) 为什么 IO 多路复用要搭配非阻塞 IO? 在使用Multiplex...

  • 细谈Select,Poll,Epoll

    阻塞 io 模型 blocking IO非阻塞 io 模型 nonblocking IOio多路复用模型 IO m...

  • 阻塞I/O、非阻塞I/O和I/O多路复用

    看概念:阻塞I/O、非阻塞I/O和I/O多路复用 - skiler - 博客园 图解阻塞io和非阻塞io及多路复用...

  • 1.Nette入门第一章——IO演进

    1. IO 基础 1.1. linux网络IO模型 阻塞IO模型 非阻塞IO模型 IO多路复用模型(NIO) 信...

  • netty学习主目录

    学习基础 四种io模型(同步阻塞io,同步非阻塞io,io多路复用(select/poll,epoll),异步io...

  • 五种 IO 模型

    五种 IO 模型 参考链接 一共有五种 IO 模型 阻塞 IO 非阻塞 IO 多路复用 IO 信号驱动 IO 异步...

  • IO模型

    阻塞IO 非阻塞IO 多路复用IO 信号驱动IO 异步IO 吃午饭之阻塞IO 下单之后,排队等在取餐口等待厨师做好...

  • Netty和NIO-未完待续

    linux底层支持bio(阻塞io),nio(多路复用io),aio(异步非阻塞io),信号io等多种方案; jd...

  • 使用python编写一个异步非阻塞模块

    异步IO请求的本质则是【非阻塞Socket】+【IO多路复用】

  • Java中的IO模型

    Java中的IO模型 Java中的IO模型有四种: 同步阻塞IO 同步非阻塞IO IO多路复用 异步IO 其中IO...

网友评论

      本文标题:IO多路复用为什么会使用非阻塞IO

      本文链接:https://www.haomeiwen.com/subject/iavwrftx.html