タスクとスレッドの違い [重複] 質問する

タスクとスレッドの違い [重複] 質問する

Task.NET では、と の2 つのクラスを使用できますThread

  • これらのクラスの違いは何ですか?
  • Threadover を使う方が良いのはいつですかTask(またその逆はどうですか)?

ベストアンサー1

Threadは低レベルの概念です。スレッドを直接開始する場合は、スレッド プールなどで実行されるのではなく、別のスレッドになることがわかります。

Taskただし、これは単に「コードを実行する場所」を抽象化するだけではなく、実際には「将来の結果の約束」にすぎません。いくつかの異なる例を挙げます。

  • Task.Delay実際のCPU時間は必要ありません。将来タイマーが鳴るように設定しているようなものです。
  • によって返されるタスクは、WebClient.DownloadStringTaskAsyncローカルで多くのCPU時間を費やすことはありません。ネットワーク遅延またはリモート作業(Webサーバー)にほとんどの時間を費やす可能性のある結果を表します。
  • によって返されるタスクは、Task.Run()実際には「このコードを個別に実行してほしい」という意味です。そのコードが実行される正確なスレッドは、いくつかの要因によって異なります

Task<T>抽象化は C# 5 の非同期サポートにとって極めて重要であることに注意してください。

一般的に、可能な限り高レベルの抽象化を使用することをお勧めします。最新の C# コードでは、独自のスレッドを明示的に開始する必要はほとんどありません。

おすすめ記事