这篇文章主要介绍“为什么epoll比select快”,在日常操作中,相信很多人在为什么epoll比select快问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么epoll比select快”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
10年积累的网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有和平免费网站建设让你可以放心的选择与我们合作。
select,poll,epoll都是IO多路复用的机制。
select每次调用都有拷贝列表数据到内核,每次都要做很多添加等待队列工作,唤醒时又要做很多移除工作。
进程唤醒后,还需要遍历一次才能知道哪些socket收到数据。
由于socket列表相对固定不变,epoll在内核维护了socket列表(红黑树)。epoll_create来新建,epoll_ctl来添加删除,epoll_wait来等待。
socket就绪后不是直接通知进程,而是通过eventpoll中介。eventpoll维护了一个就绪列表。这样进程直接获取到就绪列表,不需要遍历所有。
水平触发(Level Triggered):只要句柄一直处于可用状态,就会一直通知用户。
边缘触发(Edge Triggered):句柄在发生读写事件时只会通知用户一次
到此,关于“为什么epoll比select快”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!