在epoll文件系统建立file节点,并开辟epoll自己的内核高速cache区,建立红黑树,分配
好想要的size的内存对象,建立一个list链表,用于存储准备就绪的事件。
把要监听的socket放到对应红黑树上,给内核中断处理程序注册一个回调函数,通知内核,如果这个句柄的数据到了,就把它放到就绪列表

epoll是一种IO多路转接技术,在LINUX网络编程中,经常用来做事件触发,即当有特定事件到来时,能够检测到,而不必阻塞进行监听。
epoll有两种工作方式,ET-水平触发 和 LT-边缘触发(默认工作方式),主要的区别是:
LT,内核通知你fd是否就绪,如果没有处理,则会持续通知。而ET,内核只通知一次。
epoll的优点
与select相比,epoll有以下优点:
2.1. 支持进程打开大量数目的socket描述符,select支持的进程描述符由FD_SETSIZE设置,默认值为
1024,而epoll不受这个限制。
2.2. epoll的效率,不随监听的socket数目增加而线性下降。
select采用轮询的方式,对socket集合的描述符表进行扫描,如果socket数量过大,并且大多数
socket属于idle状态,select的扫描就做了很多无用功。
epoll只会对活跃的socket进行操作,所以,在socket数量比较大,而绝大多数socket属于idle
状态时,epoll的效率会远胜于select。如果绝大多数socket是活跃的,由于epoll_ctl的影响,
epoll的效率会稍微比select差。
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【epoll原理】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态
