0

私は CLR 4.0 の詳細を学ぼうとしています。ThreadPool と Microsoft が推奨するさまざまな戦略。私はこれらのトピックの多くについてかなり最新であると考えており、日常的にスレッド化と並行コードを使用しています。

私は最近、並列パターンと実践に戻ってきましたが、「ワーク スティーリング」とローカル スレッド キューとグローバル スレッド キューの簡単な概要を説明している分散スケジューリング手法のセクションに少し引っかかっています。

私が持っている質問は次のとおりです。

1)ワークスティールはオプトインかオプトアウトか? ローカルスレッドキューを使用するのと同じですか? それとも、これは CLR 4.0 では既定で発生しますか?

2) ローカル スレッド キューとグローバル スレッド キューのどちらを使用しているかを制御できますか? もしそうなら、どの API 呼び出しを介して?

4

2 に答える 2

0

どちらも制御できません。これは、デフォルトのスレッドスケジューラがタスクをスケジュールする方法を説明しています。それは単にそれがどのように機能するかです。独自の TaskScheduler を完全に作成し、独自のスケジューラをゼロから作成することもできます。またTaskCreationOptions、スケジューラにいくつかのヒントを提供するために使用することもできます (必要に応じて、自由に無視できます)。タスクが入るこれらのキューの。

Task モデルの主なポイントは、そのような詳細について心配する必要がないことです。その意図は、任意のワーカー スレッドによって任意の順序で作業をスケジュールできること、およびフレームワーク スケジューラに作業を最適化することを許可することです。定数を追加すると、それを効果的に行うことが難しくなります。前述のように、タスクのスケジューリングにまったく異なるアルゴリズムが必要な場合は、カスタム タスク スケジューラを使用できます。

于 2013-08-09T15:23:39.307 に答える