码迷,mamicode.com
首页 > 其他好文 > 详细

epoll 水平触发和边缘触发的区别

时间:2014-08-06 17:57:51      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:数据   ad   程序   用户   ash   as   sp   read   

EPOLLLT——水平触发
EPOLLET——边缘触发

epoll有EPOLLLT和EPOLLET两种触发模式,LT是默认的模式,ET是“高速”模式。LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户程序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提示了,无 论fd中是否还有数据可读。所以在ET模式下,read一个fd的时候一定要把它的buffer读光,也就是说一直读到read的返回值小于请求值,或者 遇到EAGAIN错误。

 

可以得出这样的结论:
ET模式仅当状态发生变化的时候才获得通知,这里所谓的状态的变化并不包括缓冲区中还有未处理的数据,也就是说,如果要采用ET模式,需要一直read/write直到出错为止,很多人反映为什么采用ET模式只接收了一部分数据就再也得不到通知了,大多因为这样;而LT模式是只要有数据没有处理就会一直通知下去的.

epoll 水平触发和边缘触发的区别,布布扣,bubuko.com

epoll 水平触发和边缘触发的区别

标签:数据   ad   程序   用户   ash   as   sp   read   

原文地址:http://www.cnblogs.com/notlate/p/3894944.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!