我正在开发一个管理一个套接字的客户端应用程序。我正在使用 IOCP 来管理异步 I/O。
这是网络编程书中的一句话:
所有重叠的操作都保证按照应用程序发出它们的顺序执行。但是,不保证从完成端口返回的完成通知的顺序相同。也就是说,如果应用程序发布两个重叠的 WSARecv 操作,一个具有 10 KB 缓冲区,下一个具有 12 KB 缓冲区,则首先填充 10 KB 缓冲区,然后填充 12 KB 缓冲区。应用程序的工作线程可能会在 10 KB 操作的完成事件之前收到来自 GetQueuedCompletionStatus 的 12 KB WSARecv 通知。当然,这只是在一个套接字上发布多个操作时的问题。
那么我该如何处理这个案子呢?