select、poll、epoll的简要对比
admin
2024-05-08 12:56:07
0

select

select的几大缺点:
(1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大
(2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大
(3)select支持的文件描述符数量太小了,默认是1024

select 为什么是1024? —— 两个1024

1,select中存放文件描述符的数组大小FD_SETSIZE为1024

2,进程的文件描述符上限默认是1024,正是因为这个原因,select设计时才把数组大小设计为1024

poll

poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。

epoll

(1)poll和select的增强版,event poll,更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。
(2)两种工作模式:LT(level trigger)和ET(edge trigger)

LT模式水平触发(默认模式):当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序可以不立即处理该事件。下次调用epoll_wait时,会再次响应应用程序并通知此事件。

ET模式边沿触发:当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序必须立即处理该事件。如果不处理,下次调用epoll_wait时,不会再次响应应用程序并通知此事件。

ET模式在很大程度上减少了epoll事件被重复触发的次数,因此效率要比LT模式高。epoll工作在ET模式的时候,必须使用非阻塞套接口,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。

相关内容

热门资讯

香港警方顺利拆除战时遗留炸弹 央视新闻 19日中午,香港北角鲗鱼涌滨海街发现一个长约1.4米、疑似战时炸弹的物品,香港警方爆炸品处...
赵建:从宏观政策到投资实践 赵... 赵建系西京研究院院长 、中国首席经济学家论坛成员2025年9月13日,西京研究院在常州舜山小镇成功举...
空军航空开放活动没能去现场?一... 9月19日 2025年空军航空开放活动 和长春航空展开幕 空军八一飞行表演队 变身“彩虹制造机” 带...
让出门问问盈利的一场内部革命:... 出品|虎嗅科技组作者|宋思杭编辑|苗正卿题图|视觉中国48岁的出门问问创始人李志飞慵懒地坐在我对面的...
鲁政委:区域性要素市场化配置综... 鲁政委、郭于玮、章怡(鲁政委系兴业银行首席经济学家、中国首席经济学家论坛理事)要素市场化配置,试点举...
邢自强:当前还没有看到“水牛”... 邢自强系摩根士丹利中国首席经济学家,中国首席经济学家论坛理事9月15日,摩根士丹利中国首席经济学家邢...
承保利润创新高!财险业上半年有... 9月18日,2025年中国财产再保险市场研讨会透露信息称,财产险行业承保利润创历史新高,再保险行业半...
山姆也在卖冷冻2年的西兰花!回... 红星资本局9月20日消息,近日,预制菜、速冻蔬菜等引发讨论,继西贝出售保质期24个月的冷冻西兰花之后...
全国都在找柠檬?连蜜雪冰城都“... 作者 |餐饮老板内参内参君柠檬供应有多紧张?雪王都卖断货了!“为什么?为什么蜜雪冰城买不到柠檬水了?...
绝味食品,被罚400万!股票将... 9月19日晚,绝味食品发布公告称,其于当天收到中国证券监督管理委员会湖南监管局下发的《行政处罚事先告...