三种I/O复用的方式比较

Posted wangkaia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种I/O复用的方式比较相关的知识,希望对你有一定的参考价值。

    1 select方式,通过在不同的fd_set内注册不同的描述符,将信息传递给内核后,内核

将修改有事件发生的描述符,select描述符首先于监听的描述符数量收到限制,并且每次

都要遍历所有描述符因此其效率受到影响。

 2  POLL方式虽然没有类描述符数量的限制,但是其效率仍然和select是相同的。每次调

用select和epoll的时候都要将用户态的数据完全的拷贝到内核态,因此效率比较低。

    3 EPOLL的方式,不仅没有了监听描述符数量的限制,同时为了减少内核向用户态传递消

息的开销,内核和用户态通过共享内存来减少了该开销。内核当中只有活跃的fd会调用callback

来返回当前发生的事件。

  epoll_create()调用时在内核当作建立了红黑树用于存储fd,同时建立了一个list用于存储就绪的事

件。

  epoll_ct()查找要操作的fd是否存在,存在则进行相应的操作,否则注册事件发生时的回调函数。

  epoll_wait()将就绪链表上的就绪事件直接拷贝到用户空间中即可。

  因此epoll的实现时十分的高效率。

 

以上是关于三种I/O复用的方式比较的主要内容,如果未能解决你的问题,请参考以下文章

I/O--多路复用的三种机制Select,Poll和Epoll对比

I/O--多路复用的三种机制Select,Poll和Epoll对比

三种多路复用IO实现方式:select,poll,epoll的区别

UNIX网络编程:I/O复用技术(selectpollepoll)

I/O多路复用

I/O多路转接复用机制---select,poll,epoll