美文网首页
几种IO复用简介

几种IO复用简介

作者: 戴帽子的鼠 | 来源:发表于2015-08-01 18:03 被阅读180次

Linux服务端编程

IO复用

select:

  • 连接数有限制需要修改linux系统设置
  • 遍历所有句柄,确定那些有事件发生,具体是什么事件

epoll:

  • 只选择发生初始注册的事件的句柄,内核使用红黑树保存句柄链表
  • 分为ET(边沿触发)、LT(水平触发)

1. LT(水平触发):

只要数据没有被取完,内核就一直在提醒

2. ET(边沿触发):

  • 与LT相比,ET模型是通过减少系统调用来达到提高并行效率的。
  • 只有状态发生发生改变,内核才会通知

Epoll在LT和ET模式下的读写方式
Epoll工作模式详解

Accept连接问题:
当多个连接同时到达的时候

  • LT模式下,如果有accept有返回,可以马上建立当前连接,然后使用epoll_wait等待下次通知
  • ET模式下,由于只有在状态发生改变(到达的连接都是EPOLLIN状态)才会接收到通知,因而只收到一次通知。所以我们除了建立这个连接外,不能马上epoll_wait,需要继续循环accept防止剩余其他的未处理的连接,直到返回-1,且errno==EAGAIN。

相关文章

  • 几种IO复用简介

    Linux服务端编程 IO复用 select: 连接数有限制需要修改linux系统设置 遍历所有句柄,确定那些有事...

  • 使用Tomcat Native提升Tomcat IO效率

    简介 IO有很多种,从最开始的Block IO,到nonblocking IO,再到IO多路复用和异步IO,一步一...

  • IO Multiplexing

    一、IO多路复用模型 二、IO多路复用简介 上图中,应用程序会调用select或epoll,其实这个里面不仅仅如此...

  • IO多路复用三种实现方式——select、poll、epoll

    简介 select、poll、epoll都属于IO多路复用机制的函数实现,IO模型具体介绍查看之前文章 selec...

  • NIO selector 多路复用reactor线程模型--20

    多路复用IO模型:多路复用IO模型是目前使用得比较多的模型。JavaNIO实际上就是多路复用IO。在多路复用IO模...

  • IO多路复用

    什么是IO多路复用 IO多路复用解决什么问题 目前有哪些IO多路复用的方案 具体怎么用 不同IO多路复用方案优缺点...

  • Android基础进阶 - 消息机制 之Native层分析

    目录 基础知识简介Linux eventfd事件等待/响应机制Linux IO多路复用epoll Android消...

  • IO复用

    在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现...

  • IO复用

    select nfds指定被监听的文件描述符总数,通常设置为select监听的所有文件描述符+ 1 readfds...

  • IO复用

    (1).select #include int select(int nfds, fd_set* readfds,...

网友评论

      本文标题:几种IO复用简介

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