这篇文章主要介绍“为什么epoll比select快”,在日常操作中,相信很多人在为什么epoll比select快问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么epoll比select快”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
select,poll,epoll都是IO多路复用的机制。
select每次调用都有拷贝列表数据到内核,每次都要做很多添加等待队列工作,唤醒时又要做很多移除工作。
进程唤醒后,还需要遍历一次才能知道哪些socket收到数据。
由于socket列表相对固定不变,epoll在内核维护了socket列表(红黑树)。epoll_create来新建,epoll_ctl来添加删除,epoll_wait来等待。
socket就绪后不是直接通知进程,而是通过eventpoll中介。eventpoll维护了一个就绪列表。这样进程直接获取到就绪列表,不需要遍历所有。
水平触发(Level Triggered):只要句柄一直处于可用状态,就会一直通知用户。
边缘触发(Edge Triggered):句柄在发生读写事件时只会通知用户一次
到此,关于“为什么epoll比select快”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。