三个函数的区别:

LT模式:在数据到达后,无论程序是没有接收,还是接收了但没有接收完,下一轮epoll\_wait仍然会提醒应用程序该描述符上有数据,直到数据被接受完。(设置为阻塞和非阻塞都可以)

ET模式:在数据到达后,无论程序是没有接收,还是接收了但没有接收完,都只提醒一次,下一轮不再提醒应用程序该描述符上有数据。(只能设置为非阻塞)


为什么epoll的ET模式只能设置为非阻塞?

ET 模式是一种边沿触发模型,在它检测到有 I/O 事件时,通过 epoll\_wait 调用会得到有事件通知的文件描述符,每于每一个被通知的文件描述符,如可读,则必须将该文件描述符一直读到空,让 errno 返回 EAGAIN 为止,否则下次的 epoll\_wait 不会返回余下的数据,会丢掉事件。而如果你的文件描述符如果不是非阻塞的,那这个一直读或一直写势必会在最后一次阻塞。

标签: 模式, epoll, 描述符, 接收, 阻塞, LT, ET

相关文章推荐

添加新评论,含*的栏目为必填