9

私は、タスクが 4.0 で非同期プログラミングを行うための推奨される方法であることについて読んでいます。タスクの使用が通常の c# スレッドより優先されるべきではないユースケースがあるかどうか疑問に思っていますか?

4

2 に答える 2

10

Tasks は基礎となるものを使用するためThreadPool(長期実行としてマークされていない限り)、 a の使用が推奨されていない場合にそれらを使用することThreadPoolはお勧めできません。

  • タスク キューを詰まらせ、他のタスクの実行を妨げる長時間の I/O 操作。
  • アフィニティの設定など、スレッド ID を必要とする操作を実行します。
于 2012-10-06T15:17:23.457 に答える
6

これについては、こちらで詳しく説明しています: .Net 4.0 でのタスクとスレッドの使用の違いに気付く必要がありますか?

この最大の違いは、TaskFactory がスレッド プーリングを使用することです。そのため、多くのタスクがある場合、それらはすぐに開始されない可能性があります。フリースレッドが実行されるまで待つ必要があります。ほとんどの場合、これは許容されます。

スレッドは、ハードウェアが許す限り、.Start() が呼び出されるとすぐに実行されます。

スレッド プーリングが問題ないと仮定すると、Tasks にはキャンセル、ContinueWith、OnSuccess、OnError、Exception 集約、WaitAll などの多くのメリットがあり、頭の中でいくつか挙げることができます。

于 2012-10-06T15:10:29.420 に答える