IO复用

作者: 吴金君 | 来源:发表于2019-05-03 15:47 被阅读0次

在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。

select()和poll() IO多路复用模型
select的缺点:

  1. 单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差;(在linux内核头文件中,有这样的定义:#define __FD_SETSIZE 1024)
  2. 内核 / 用户空间内存拷贝问题,select需要复制大量的句柄数据结构,产生巨大的开销;
    select返回的是含有整个句柄的数组,应用程序需要遍历整个数组才能发现哪些句柄发生了事件;
  3. select的触发方式是水平触发,应用程序如果没有完成对一个已经就绪的文件描述符进行IO操作,那么之后每次select调用还是会将这些文件描述符通知进程。

相关文章

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

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

  • IO多路复用

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

  • IO复用

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

  • IO复用

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

  • IO复用

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

  • 2018-07-25

    网络IO之阻塞、非阻塞、IO复用、异步IO、同步IO 之前在看一些资料的过程中,经常提到阻塞、非阻塞、IO复用、异...

  • IO多路复用

    IO模型 阻塞IO只能阻塞一个IO操作,IO复用模型能阻塞多个IO操作,所以才叫多路复用读数据: 等待数据到达 将...

  • 2.Netty框架-线程模型(Reactor线程模型)

    一、了解IO多路复用技术 IO多路复用技术,将多个IO的阻塞复用到一个select的阻塞上,从而是系统在单线程的情...

  • epoll和select的原理

    IO多路复用的原理 IO多路复用的四个关键词:监控者、内核态、用户态、文件句柄。IO多路复用的五个关键问题(步骤)...

  • Nginx的优势

    一、IO多路复用什么是IO多路复用:多个描述符的IO操作都能在一个线程内并发交替地顺序完成,这里的“复用”指的是复...

网友评论

      本文标题:IO复用

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