ブックマーク / www.kekyo.net (1)

  • Async訪ねて3000里 (6) : I/O完了ポートによるワーカースレッドの運用

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

    Async訪ねて3000里 (6) : I/O完了ポートによるワーカースレッドの運用
    tanaka733
    tanaka733 2017/05/27
  • 1