ConfigureAwait

ConfigureAwait関連の会話
3
あえとす @aetos382

ConfigureAwait(true) はスレッドスイッチを抑制しない。ワーカースレッド内で ConfigureAwait(true) をしても、拾える同期コンテキストはないけど、スレッドスイッチは発生し得る。ので、不必要なパフォーマンス劣化をもたらす可能性がある。

2015-05-01 11:37:08
あえとす @aetos382

ConfigureAwait(true) は、後続処理を同期コンテキストで走らせる。ただし、同期コンテキストがない場合の既定の挙動が、スレッドプール上で実行するってことなんだろう。なので、同じスレッドで動く場合もあるし、違うスレッドで動く場合もある。

2015-05-01 11:41:26
あえとす @aetos382

SynchronizationContext は抽象クラスじゃない。Post の既定の実装は QueueUserWorkItem になってる。null の場合は新しい SyncContext を new して Post するのかもしれない。

2015-05-01 11:44:00
あえとす @aetos382

非同期メソッドは await した時点の SynchronizationContext をキャプチャするんだな、ふむふむ。

2015-05-01 12:14:49
どちらともいえない @azyobuzin

はてなブログに投稿しました #はてなブログ やはり ConfigureAwait のデフォルトはまちがっている。 - アジョブジ星通信 azyobuzin.hatenablog.com/entry/2015/05/…

2015-05-01 19:00:36