スレッドプールを使用して、重複した読み取り操作を開始/キャンセルします(それぞれを使用してReadFile()
) 。またCancelIo()
、読み取り操作が完了したときに完了ポートイベントを処理します。
- どのスレッドでも読み取り操作を開始できます
- どのスレッドも読み取り完了イベントを処理できます
- 読み取りを開始したスレッドのみがそれをキャンセルできます(これは
CancelIo()
制限です)
これを実装する方法がわかりません。GetQueuedCompletionStatus()
通常、完了ポートイベントを待機し、通常のイベントを待機するように呼び出しWaitForSingleObject()
ますが、この2つを組み合わせる方法は明確ではありません。PostQueuedCompletionStatus()
ウェイクアップする特定のスレッドを指定できるとしたら、設定されます。何か案は?
更新:ソリューションはWindowsXPで実行する必要があります。残念ながら、これはまたはの使用を除外しCancelIoEx()
ますGetQueuedCompletionStatusEx()
。