Я хочу использовать пул потоков для инициирования/отмены перекрывающихся операций чтения, используя ReadFile()
и CancelIo()
соответственно, а также для обработки любых событий порта завершения после завершения операций чтения.
- Любой поток может инициировать операцию чтения
- Любой поток может обрабатывать событие завершения чтения
- Только поток, инициировавший чтение, может отменить его (это ограничение
CancelIo()
).
Я не уверен, как это реализовать. Обычно вызывается GetQueuedCompletionStatus()
для ожидания завершения событий порта и WaitForSingleObject()
для ожидания обычных событий, но неясно, как их смешивать. Если бы PostQueuedCompletionStatus()
позволил мне указать конкретный поток для пробуждения, я был бы настроен. Любые идеи?
ОБНОВЛЕНИЕ: решение должно работать в Windows XP. К сожалению, это исключает использование CancelIoEx()
или GetQueuedCompletionStatusEx()
.