5

ある程度の CPU 時間が利用できるときに実行する重要度の低いタスクがいくつかあります。他のインポート タスクが実行されている場合は、このタスクを実行したくありません。つまり、通常/高優先度のタスクが発生した場合、重要度の低いタスクが完了するまで、重要度の低いタスクを一時停止したいと考えています。

実行する重要度の低いタスクがかなりの数 (50 から 1000) あります。そのため、タスクごとに 1 つのスレッドを作成したくありません。ただし、スレッドプールでは優先順位の指定が許可されていないと思いますよね?

これをどのように解決しますか?

4

4 に答える 4

2

Thread を新規作成し、Dispatcherを使用してさまざまな優先度のテイクを送信できます。

優先順位は少し UI 中心ですが、それはあまり重要ではありません。

于 2009-10-16T15:01:20.017 に答える
2

あなたは唯一の消費者ではないので、通常 の優先度をいじるべきではありません。ThreadPool論理的なアプローチは、独自のものを作成することだと思います-おそらくプロデューサー/コンシューマーキューと同じくらい簡単で、独自のものをコンシューマーとして使用Threadし、スレッドの優先度を自分で設定します。

.NET 4.0 には、これらすべてを簡単にする新しいライブラリ (TPL など) が含まれています。それまでは、カスタム スレッド プールまたはワーク キューを作成するための追加コードが必要です。

于 2009-10-16T15:02:35.723 に答える