epoll的ET和LT两种模式对比及注意事项
2017-11-17 00:00
411 查看
ET模式
因为ET模式只有从unavailable到available才会触发,所以读事件:需要使用while循环读取完,一般是读到EAGAIN,也可以读到返回值小于缓冲区大小;
如果应用层读缓冲区满:那就需要应用层自行标记,解决OS不再通知可读的问题
写事件:需要使用while循环写到EAGAIN,也可以写到返回值小于缓冲区大小
如果应用层写缓冲区空(无内容可写):那就需要应用层自行标记,解决OS不再通知可写的问题。
LT模式
因为LT模式只要available就会触发,所以:读事件:因为一般应用层的逻辑是“来了就能读”,所以一般没有问题,无需while循环读取到EAGAIN;
如果应用层读缓冲区满:就会经常触发,解决方式如下;
写事件:如果没有内容要写,就会经常触发,解决方式如下。
LT经常触发读写事件的解决办法:修改fd的注册事件,或者把fd移出epollfd。
总结
目前好像还是LT方式应用较多,包括redis、libuv等。(nginx使用ET)LT模式的优点在于:事件循环处理比较简单,无需关注应用层是否有缓冲或缓冲区是否满,只管上报事件
缺点是:可能经常上报,可能影响性能。
相关文章推荐
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- 非阻塞socket与epoll的ET模式结合使用注意事项
- epoll的两种触发模式ET和LT
- epoll在ET模式下的一些注意事项
- 彻底学会使用epoll(五)—— ET模式下的注意事项
- 非阻塞socket与epoll的ET模式结合使用注意事项
- epoll两种模式(lt/et)复习
- UNIX网络编程——epoll的ET/LT模式注意点
- Epoll在LT和ET模式下的读写方式
- Epoll在LT和ET模式下的读写方式
- Epoll在LT和ET模式下的读写方式
- epoll ET模式和LT模式
- Epoll在LT和ET模式下的读写方式
- epoll中ET和LT模式的区别
- 【服务器编程】EPOLL的LT和ET模式的区别和理解
- Epoll在LT和ET模式下的读写方式
- epoll的LT和ET模式
- epoll的ET和LT模式