前回、TaskCompletionSourceによるタスクの継続に、APCコールバックを使用した場合の欠点を示しました。 APCコールバックはユーザーモードから見た場合の挙動がわかりやすい(コールバックが実行される)のですが、MsgWaitForMultipleObjectsEx APIなどのAPCコールバック対応APIで待機する必要があり、待機したスレッド(通常はメインスレッド)からコールバックが呼び出されるため、そのスレッドだけでI/Oの完了を捌く必要があります。 仮にシステムに多くのCPUコアが存在する場合でも、I/Oの完了による継続処理(翻ってawait後の処理)が、単一のスレッドだけで処理されることになり、パフォーマンスが上がりません。 @kekyo2 そちらの記事だと完了ルーチンは「PC内全スレッド」がコールバック実行対象候補のように書かれています。完了ポートは「GetQueu