找个工作

Epoll

2021-04-16  本文已影响0人  吃掉夏天的怪物
image.png
image.png image.png

第二个参数是输出参数

poll模型
每次调用poll函数的时候,都需要把监听套接字于已接字所感兴趣的时间组 拷贝到内核
数据拷贝是服务器性能的四大杀手之一。
epoll模型
不需要进行拷贝,只要关注的事件没有发生改变,就不需要对它关注

两种触发模式

如果采用L T,那什么时候关注EPOLLOUT事件?会不会造成busy-loop?

ET模式


image.png

可以处理EMFILE
这种模式也有一个问题:
如果漏读了数据,后续新的客户端连接来,就一直不触发了。

LT电平触发(高电平触发)

ET 边沿触发

低电平-->高电平 触发
高电平-->低电平 触发

image.png

fd_set 32*32 1024位


image.png
image.png
image.png

EPOLL效率不总是高于select 和 poll。如果已连接套接字不太大,并且这些套接字非常活跃,不停的调用callback函数可能比一次性遍历返回 活跃的文件描述符效率更低

EPOLL内部实现更复杂,更复杂的代码逻辑
优势:处理大量连接,因此处理大并发服务器的时候要用EPOLL模型

上一篇下一篇

猜你喜欢

热点阅读