Wellでも.Net 4
には、新しいタスク機能があります。Async/Await
と.Net 4.5
で非同期で実行したいと思っています。私は別のThread
を使用しなければならない場合があります。特に、Task.RunはThreadPool
を使用してメソッドを非同期に実行しています。Tasksと.NETのスレッド4.5
結論:と一緒にAsync/Await
の組み合わせを使用しているとThreads
を無料で使えますか?
Wellでも.Net 4
には、新しいタスク機能があります。Async/Await
と.Net 4.5
で非同期で実行したいと思っています。私は別のThread
を使用しなければならない場合があります。特に、Task.RunはThreadPool
を使用してメソッドを非同期に実行しています。Tasksと.NETのスレッド4.5
結論:と一緒にAsync/Await
の組み合わせを使用しているとThreads
を無料で使えますか?
オプションを指定した場合(継続にも同等の機能があります)、タスクはスレッドプールスレッドを使用しません。通常はThread
が使用されます。技術的にはこれは実装の詳細であり、仕様には含まれていませんが、それに頼るのは完全に不合理な仮定ではありません。
Task
を使用すると、Thread
で直接行うことができるはずです。
誰かがThread
を直接使用したいと思うかもしれない主なケースは、TPLの上にビルドしないことを前提に、あなた自身の並列ライブラリを作成することです。独自のライブラリを作成するときは、ビジネスアプリケーションのコンテキストでは重要ではありませんが、特定のThread
オブジェクトの基本的な詳細にアクセスする必要があります。または、Tasks
を使用してオーバーヘッドを小さくしたい場合があります。
まだ.NET 4.0を使用していない場合は、Task
を使用するオプションはありません。
私は.NET 4.5を使用しています。また、私はライブラリを作成するつもりはありません。私の仕事はすべて、私のコードをすべてエレガントに仕上げる最も簡単で最も強力な方法です。だから私は何をあなたがタスクを使用してスレッドを使用して行われて何をすることができることを言っていると結論することができますか?また、Async/Awaitと組み合わせてタスクを使用するだけで、すべての非同期作業を完了させることも可能です。そして、あなたにはすぐに詳細な答えをありがとう。 –
+1スレッドで通常使用するタスクにLongRunningオプションを使用することをお勧めします。これにより、非同期/待機を容易に取得できます。 ThreadPoolスレッドを使用しない他の方法もあります。しかし、彼らは実際にあなたが非同期/待っていることを今ではあまり買っていません。 –
@PeterRitchie:しかし、私の知識が非同期であることを確認するには、メソッドが待ち受けるように設計されています。現在待っている仕事はちょうど終わっているか、それともAsync/Awaitの別の使い方がありますか? –
これはあなたの行っていることに完全に依存します。 – SLaks
@SLaksだから、あなたが私の仕事をするために新しいスレッドをいつトリガするべきか、ThreadPool(Task.Runはどれですか)が十分なのかを教えてください。 –