некоторые OVERLAPS с использованием WSASend не возвращаются своевременно с использованием GetQueuedCompletionStatus?

Справочная информация: я использую CreateIoCompletionPort, WSASend / Recv и GetQueuedCompletionStatus для выполнения перекрывающихся сокетов io на моем сервере. Для управления потоком при отправке клиенту я разрешаю вызывать несколько WSASend () только тогда, когда все ожидающие OVERLAP выталкиваются из IOCP.

Проблема: недавно были случаи, когда OVERLAP не возвращались в IOCP. Поток, вызывающий GetQueuedCompletionStatus, не получает их, и они остаются в моей локальной очереди ожидания. Я проверил, что клиент получает данные из сокета, и сокет подключен. При выполнении вызовов WSASend () ошибок не было. ПЕРЕКРЫТИЯ просто «никогда» возвращайтесь без внешнего раздражителя, подобного следующему:

Disconnecting the socket from the client or server, immediately allows the GetQueuedCompletionStatus thread to retrieve the OVERLAPs Making additional calls to WSASend(), sometimes several are needed, before all the OVERLAPs suddenly pop off the queue.

Вопрос: Кто-нибудь видел этот тип поведения? Любые идеи о том, что вызывает это?

Спасибо, Джеффри

Ответы на вопрос(1)

Ваш ответ на вопрос