【发布时间】:2014-03-09 00:28:02
【问题描述】:
等待EPOLLIN,从socket中读取所有数据,然后立即发送响应是不是错了?
在发送响应之前等待 EPOLLOUT 会更好吗?如果是这样 - 为什么?如果不是,那么 EPOLLOUT 的目的到底是什么?
我见过一些等待 EPOLLOUT 的 epoll 示例和一些不等待的示例。
【问题讨论】:
标签: epoll
等待EPOLLIN,从socket中读取所有数据,然后立即发送响应是不是错了?
在发送响应之前等待 EPOLLOUT 会更好吗?如果是这样 - 为什么?如果不是,那么 EPOLLOUT 的目的到底是什么?
我见过一些等待 EPOLLOUT 的 epoll 示例和一些不等待的示例。
【问题讨论】:
标签: epoll
如果等待EPOLLOUT,保证下一个send不会阻塞。这意味着它将接受至少 1 个字节(这无疑是一个很差的保证,但不幸的是,你永远无法保证 send 接受至少 1 个字节以上)。
如果阻塞没有问题或者套接字是非阻塞的(在这种情况下send 会因EWOULDBLOCK 而失败),您无需等待EPOLLOUT 就可以做得很好。它肯定会产生更简单的代码。
这样做也没有错。
【讨论】: