http://support.microsoft.com/kb/156932によると、特定の条件が満たされている場合、ReadFileの呼び出しは同期しているように見えます。たとえば、ターゲットファイルがNTFS圧縮されている場合。この記事では、ファイルハンドルがIOCPに関連付けられている場合に何が起こるかについて何も言及していません。Win32 IO Completion PortとIOの同期表示はどうなりますか?
この場合、ファイルハンドルがIOCPに関連付けられているとどうなりますか?私はまだこの要求に対してIO完了パケットを受け取るのでしょうか、要求は完全に同期して実行されますか?
もしそうなら、私はReadFile呼び出し全体をワーカースレッドに入れなければなりません。最初にReadFile呼び出しを発行するスレッドはブロックできません。理由は私がIOCPを検討しているのは、ReadFile呼び出しをワーカースレッドに入れることは、ReadFileの直後にブロックするワーカースレッドへのコンテキスト切り替えを意味するからです。