epoll - 您应该等待EPOLLOUT吗?

时间:2014-03-09 00:28:03

标签: epoll

等待EPOLLIN,从套接字读取所有数据,然后立即发送响应是错误的吗?

在发送响应之前等待EPOLLOUT会更好吗?如果是这样 - 为什么?如果不是 - EPOLLOUT的目的究竟是什么?

我看过一些等待EPOLLOUT的epoll示例,有些则没有。

1 个答案:

答案 0 :(得分:1)

如果您等待EPOLLOUT,则可以保证下一个send不会阻止。这意味着它将接受至少1个字节(这无疑是一个相当差的保证,但不幸的是,只是这样,你永远不能保证send接受超过至少1个字节)

如果阻塞没有问题或者套接字是非阻塞的(在这种情况下EPOLLOUT会因send而失败),您可以完全顺利完成而无需等待EWOULDBLOCK。这肯定会导致代码复杂得多。
这两种方式都没有错。

相关问题