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