1

この記事でスレッドプールとタスクがどのように機能するかを読んだ後、私はこの質問を思いつきました-

一部のモジュールが を使用tasksし、一部が を使用する複雑なプログラムがある場合、用途thread poolが異なるためにスケジューリングの問題が発生する可能性はありますか?

4

4 に答える 4

2

多くの場合、タスクはスレッド プールを使用して実装されます (もちろん、異なる動作を行う他のタイプのスケジューラを使用するタスクを使用することもできますが、これがデフォルトです)。実行される実際のコードに関しては (タスクが実行されるデリゲートを表していると仮定すると)、実際には大きな違いはありません。

タスクは、非同期操作に関する情報を収集し、その結果を処理する際に追加機能を提供するために、そのスレッド プール呼び出しのラッパーを作成するだけです。その追加機能を活用したい場合は、タスクを使用してください。特定のコンテキストで使用する必要がない場合は、スレッド プールを直接使用しても問題はありません。

これらの操作の結果から必要なものを取得するのに問題がない限り、2 つを混在させることはまったく問題ではありません。

于 2013-11-01T15:31:45.607 に答える
1

いいえ、問題はありません。両方を行うのは効率が悪いだけです。本当に必要なものを使用し、パターンに固執します。特に、使用するスレッド化アルゴリズムに関係なく、異なるスレッドから同じリソース/変数などにアクセスしている場合は、アプリを MT セーフにすることを忘れないでください。

于 2013-11-01T15:28:48.693 に答える