用了下 epoll,顺便了解了一下 EPOLLET 和 EPOLLLT
EPOLLLT 是默认行为,基本上就是说,只要一个文件描述符处于就绪状态,epoll 就会不停的通知你有事件发生。传统的 select/poll 都是这样的
EPOLLET 是新的方式,只在一个文件描述符新处于就绪的时候通知一次,之后不管数据有没有读完,都不会再通知,当然,有新数据到还是会通知的。所以,用 EPOLLET 的时候,一定要把文件描述符设置为 non-blocking,而且最好是一直读数据,读到返回 EAGAIN 才停下
个人理解,EPOLLLT 像拉稀,只要没拉干净,你总会被通知;EPOLLET 像正常拉屎,只要你愿意,拉到一半也可以穿裤子走人,直到下一轮的屎来了又被通知一下。

本文对比了epoll中两种不同触发模式:EPOLLET(边缘触发)与EPOLLLT(水平触发)的区别。EPOLLLT在文件描述符就绪时会持续通知,而EPOLLET仅在初次就绪时通知,直至数据被读取完毕。文中还形象地比喻了这两种模式的不同应用场景。

3615

被折叠的 条评论
为什么被折叠?



