等待EPOLLIN,从套接字读取所有数据,然后立即发送响应是错误的吗?
在发送响应之前等待EPOLLOUT会更好吗?如果是这样 - 为什么?如果不是 - EPOLLOUT的目的究竟是什么?
我看过一些等待EPOLLOUT的epoll示例,有些则没有。
答案 0 :(得分:1)
如果您等待EPOLLOUT
,则可以保证下一个send
不会阻止。这意味着它将接受至少1个字节(这无疑是一个相当差的保证,但不幸的是,只是这样,你永远不能保证send
接受超过至少1个字节)
如果阻塞没有问题或者套接字是非阻塞的(在这种情况下EPOLLOUT
会因send
而失败),您可以完全顺利完成而无需等待EWOULDBLOCK
。这肯定会导致代码复杂得多。
这两种方式都没有错。