Я разрабатываю клиентское приложение, которое управляет одним сокетом. Я использую IOCP для управления асинхронным вводом-выводом.
Это цитата из книги по сетевому программированию:
Все перекрывающиеся операции гарантированно выполняются в том порядке, в котором их выдало приложение. Однако не гарантируется, что уведомления о завершении, возвращаемые из порта завершения, будут в том же порядке. То есть, если приложение отправляет две перекрывающиеся операции WSARecv, одну с буфером 10 КБ, а другую с буфером 12 КБ, сначала заполняется буфер 10 КБ, а затем буфер 12 КБ. Рабочий поток приложения может получить уведомление от GetQueuedCompletionStatus для WSARecv размером 12 КБ до события завершения для операции размером 10 КБ. Конечно, это проблема только тогда, когда на сокете размещено несколько операций.
Итак, как мне поступить в этом случае?