我有一个基于反应堆的设计,其中在epoll_wait
中轮询了许多套接字文件描述符。
为了优化延迟而不是吞吐量,在写入套接字时,我们尝试立即直接写入文件描述符。
如果是EWOULDBLOCK
,我们会缓冲未写入的数据,然后等待套接字再次变为可写。
下次我们的epoll_wait
将我们的文件描述符返回为可写时,然后我们从缓冲的数据发送。
问题是,套接字是否可以写 之后我们收到EWOULDBLOCK
但之前我们会调用epoll_wait
吗?
也就是说,如果我们进行2次 write
次调用,其中第一次 write
被部分写入,其余部分被缓冲,然后执行尝试立即写入的第二个 write
,套接字可以在第一次和第二次写入调用之间变为可写,并且我们最终在远端接收到无序数据?