質問のとおりです。await
コードを呼び出すだけで新しいスレッドが作成される可能性があるかどうかを知りたいです。
コンソールアプリの実行中だとしましょう。
質問のとおりです。await
コードを呼び出すだけで新しいスレッドが作成される可能性があるかどうかを知りたいです。
コンソールアプリの実行中だとしましょう。
Microsoft の .NET 4.5Task
実装では、最初にawait
インラインで (つまり、タスクを完了したスレッドで) ベースの継続を呼び出そうとします。インラインで実行できない場合 (スタックの深さや a の使用などによりSynchronizationContext
)、代わりにシステム スレッド プールが使用されます。プールで新しいスレッドの作成をトリガーする可能性がありますが、明示的に新しいスレッドを作成することはありません。
詳細についてSystem.Threading.Tasks.AwaitTaskContinuation
は、参照元を参照してください。
この回答は awaited にのみ適用さTask
れ、Microsoft .NET 4.5 Framework にのみ適用されることに注意してください。SynchronizationContext
また、を使用していないスレッドから待機している場合はConfigureAwait(false)
、実装に依存しSynchronizationContext
ます。WinForms、WPF、または Silverlight に対して新しいスレッドを作成しないでくださいSynchronizationContext
。