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