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

本文详细解析了epoll的两种触发模式:水平触发(LT)与边缘触发(ET)。LT模式下,只要有数据可读,每次epoll_wait都会返回事件;而ET模式仅在数据首次可读时返回事件,直至再次有数据流入前不再提示。在ET模式中,读取文件描述符时必须清空其缓冲区。

1384

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



