【发布时间】:2016-06-30 06:27:21
【问题描述】:
我不清楚,我在某处读到 GetQueuedCompletionStatus 将按照创建顺序返回 WSARecv 和 WSASend 结果,所以这是我的问题:
在服务器中如果使用NumberOfConcurrentThreads = 1 初始化CreateIoCompletionPort,然后打开与一个客户端的连接,服务器首先调用WSARecv,然后调用WSASend,但客户端从不发送任何内容。在服务器中,GetQueuedCompletionStatus 是否永远不会返回来自WSASend 的结果,因为来自WSARecv 的结果必须首先发生?
【问题讨论】:
-
到底是什么问题以及这里的 IOCP 是如何相关的?仅在 WSARecv 完成后才需要调用 WSASend 吗?或如何/什么逻辑?
-
我在某处读到 GetQueuedCompletionStatus 将按照 WSARecv 和 WSASend 结果的创建顺序返回它们 - 不。结果按 I/O 完成的顺序返回。
-
我投票结束这个问题,因为它是基于一个错误的假设。
标签: sockets winapi io-completion-ports