Большинство серверных фреймворков/примеров, использующих сокеты и порты завершения ввода-вывода, делают уведомления таким образом, что я не мог полностью понять цель.
После обработки пакетов чтения они обычно переупорядочиваются, чтобы обойти проблемы планирования потоков, обрабатывая пакеты не по порядку, независимо от того, что IOCP обеспечивает очередь FIFO.
Проблема заключается в том, что сокет закрывается изящно или по ошибке. Я видел в обеих ситуациях, и снова о.с. планировщик потоков, уведомление о закрытии может быть отправлено приложению (т. е. http-серверу, использующему фреймворк) «до» уведомления о ранее прочитанных данных.
Я думаю, что уведомление о закрытии должно быть поставлено в очередь таким образом, чтобы приложение получало его после предыдущего чтения.
Есть ли какое-либо предполагаемое использование в большей части кода, который я видел, или мое поведение может быть правильным в зависимости от ситуации?