1 つのソケットを管理するクライアント アプリケーションを開発しています。IOCP を使用して非同期 I/O を管理しています。
これは、ネットワーキング プログラミングの本からの引用です。
重複するすべての操作は、アプリケーションが発行した順序で実行されることが保証されます。ただし、完了ポートから返される完了通知が同じ順序であるとは限りません。つまり、アプリケーションが 2 つのオーバーラップした WSARecv 操作 (1 つは 10 KB バッファー、次は 12 KB バッファー) を送信した場合、10 KB バッファーが最初にいっぱいになり、次に 12 KB バッファーが続きます。アプリケーションのワーカー スレッドは、10 KB 操作の完了イベントの前に、12 KB WSARecv の GetQueuedCompletionStatus から通知を受け取る場合があります。もちろん、これはソケットに複数の操作がポストされた場合にのみ問題になります。
では、この場合の対応はどうすればよいのでしょうか。