0

Task.Factory.StartNew() を実装して Task Parallel Library を使用しています。タスクの実行時にアプリケーションが生成するスレッドの数を確認する方法はありますか?

現在、開発環境のデュアル コア プロセッサでアプリケーションを実行しています。

4

1 に答える 1

3

カスタムスケジューラを使用するか、TaskCreationOptions.LongRunningオプションを渡さない限り、TPLはタスクの実行時にスレッドを生成しません。それでも、長時間実行されるタスクの処理方法を決定するために使用されるのはTaskScheduler次第です。

TPLは、プールのスレッドによる実行のために、個々のタスクをスレッドプールにスケジュールします。各スレッドには、マルチコアマシンでの競合を減らすための独自のキューがあります。スレッドがビジー状態の場合、フレームワークはワークスティーリングマジックを使用して、同じスレッドプール内のアイドル状態のスレッドにタスクを割り当てます。

詳細については、tplがCLRスレッドプールをどのように使用するかを確認してください。作業の盗用の詳細については、DanielMothによるこの投稿を参照してください。

于 2012-12-24T13:22:21.923 に答える