select、poll、epoll对比

  select、poll、epoll是Linux系统I/O多路复用的实现机制手段,通过前面的TCP编程,对三者做一个对比总结表。


select poll epoll
时间复杂度 O(n) O(n) O(1)
监听文件描述(fd)符数目 有限(默认1024) 理论上无限 理论上无限
监听方式 轮询fd集合 轮询fd集合 通过事件表
触发方式 LT LT LT & ET
特点 每次调用,都需把fd集合从用户态拷贝到内核态,且需要遍历所有fd集合 每次调用,都需要遍历所有fd集合 事件触发,无需遍历所有fd集合
适用场合 少量fd监听,且fd十分活跃 少量fd监听,且fd十分活跃 大量fd监听,或者fd活跃程度不高,如服务器端

例程代码

【1】select
  https://blog.csdn.net/qq_20553613/article/details/100026164

【2】poll
  https://blog.csdn.net/qq_20553613/article/details/100047078

【3】epoll
  https://blog.csdn.net/qq_20553613/article/details/100067052


参考

【1】https://blog.csdn.net/lsgqjh/article/details/65629609
【2】https://www.cnblogs.com/aspirant/p/9166944.html
【3】https://blog.csdn.net/zgege/article/details/81632990

posted @ 2019-08-30 00:30  Acuity  阅读(63)  评论(0编辑  收藏  举报