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模式的时候,必须使用非阻塞套接口,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。

相关内容

热门资讯

康美药业,1元卖子? 康美药业... 唏嘘在资本市场上,康美药业是个极具戏剧性的公司和案例,不管是财务、监管、还是投资者,都能从其身上找到...
770亿封测龙头业绩出炉!长电... 本文来源:时代周报 作者:朱成呈 闫晓寒4月9日晚,封测龙头长电科技发布2025年年报,公司全年实现...
睿能科技:拟收购博泰智能75%... 新京报贝壳财经讯 4月9日,睿能科技发布公告称,公司拟通过发行股份及支付现金的方式购买杨博、杨硕、鑫...
痛心!云南45岁公安局副局长余... 2026年4月8日 云南楚雄 永仁县公安局副局长余红李 在专案侦办会上突发疾病 猝然倒下 因公...
浙江新能源增量项目机制电价竞价... 9月3日消息,浙江省发改委公开征求《浙江省新能源上网电价市场化改革实施方案(征求意见稿)》及配套实施...
中证指数:9月10日正式发布中... 9月3日消息,中证指数有限公司将于2025年9月10日正式发布中证A500成长指数和中证A500价值...
小米旗下基金、九安医疗等入股北... 9月3日消息,企查查显示,近日,北京奇绩创坛二期创业投资中心(有限合伙)发生工商变更,新增小米旗下基...
财政部拟第二次续发行2025年... 9月3日消息,财政部拟第二次续发行2025年超长期特别国债(三期)。本次续发行国债为50年期固定利率...
花旗聘请摩根大通高管Kulka... 9月3日消息,据报道,花旗集团已聘请Kaustubh Kulkarni担任亚洲投资银行业务负责人,该...
普京宣布东正教复活节停火 乌克... 俄罗斯总统普京9日宣布,俄方即将实施东正教复活节停火。 据克里姆林宫网站发布的一份声明,俄武装力量最...