epoll的优劣与原理分析

epoll的优劣与原理分析

attachments-2020-07-lNgn6YjY5f237724b8000.png

epoll事件驱动模型与poll的比较
X轴为句柄数
Y轴为响应时间
可以看到epoll几乎不受句柄数的增加的影响

v2-a647b1a9bb95e848b0ac967c5035bd1b_720w.jpg
 

epoll事件驱动模型的原理
epoll与poll的比较
epoll存储活跃的连接,每次只处理活跃的连接数量占比很小
poll是每次将所有的连接交给操作系统去遍历,找出活跃的连接,因此连接越多,耗时越长
epoll 如何实现只处理活跃连接
epoll实现了eventpoll数据结构
数据结构中rdlist将活跃连接存储在链表中,当网卡发送报文时,增加节点,当读取一个事件后,链表删除节点,需要得到活跃连接就只需要遍历链表
数据结构中rdr使用红黑树(自平衡二叉树)将事件存储,例如:当有读事件时,就新增节点,事件复杂度为logN

v2-66a988c2fe31fac5552f641a90adef40_720w.jpg

 

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » epoll的优劣与原理分析