1. ホーム
  2. c#

[解決済み] タスクとスレッドの違い [重複]について

2022-03-24 03:41:56

質問

並列プログラミングは初めてなんですが、どうしたらいいですか?.NETでは2つのクラスが用意されています。 TaskThread .

そこで質問なのですが

  • これらのクラスの違いは何ですか?
  • を使用した方が良い場合 Thread オーバー Task (逆もまた然り)?

解決方法は?

Thread は下位概念であり、直接スレッドを立ち上げるのであれば 知っている スレッドプールなどで実行するのではなく、独立したスレッドになります。

Task は、単に「どこでコードを実行するか」という抽象化以上のもので、実際には「将来の結果の約束」なのです。そこで、いくつか別の例を挙げてみましょう。

  • Task.Delay は、実際のCPU時間を必要とせず、将来鳴るタイマーをセットするようなものだ
  • が返すタスクは WebClient.DownloadStringTaskAsync これは、ネットワーク遅延やリモート作業 (ウェブサーバー) にほとんどの時間を費やす可能性がある結果を表しているのです。
  • が返すタスクは Task.Run() 本当に このコードを別に実行してほしい」と言うことです。そのコードが実行される正確なスレッドは、多くの要因に依存します。

なお Task<T> 抽象化は、C# 5の非同期サポートに極めて重要です。

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