編集済み:もともと2つの質問があり、自分自身でテストして答えを得ました。C#スレッドのCPU使用量を制限する
私は、フォルダセット内のファイルを検索するスレッド型リーダー/ライターを作成しています。これは、ユーザーが指定した場合は5分ごとに実行されます。
私の現在の問題は、スレッドがあまりにも多くの貪欲を伴うファイルを見ることです。スレッドをCPUの最大30%(または、ユーザーが指定した量より速く/遅くしたい場合に備えて)に制限する必要があります。これは、これが常にオンになっているはずのプログラムであり、インターネットをブラウズしたり他のプログラムを同時に使用したりするのを妨げたくないからです。私は個人的には、優先度を低く設定しても、100%のCPUを使用しているスレッドプログラムが他のプログラムと一緒に使用されていることに気付き、これを回避しようとしています。
私はPerformanceCounterを使用してCPU使用率を確認し、うまくいけばプログラムを特定し、(CPU全体または特定のプログラムのCPUのパフォーマンスがピークに達する) 。私はスレッドのCPU使用率を制限するためのドキュメントは見つけられませんでした。なぜなら、 "本当に実現できない"理由がないからです(これは完全に大丈夫です - ほとんどの人はスレッドをできるだけ早く実行したい、 .NETや他のC#ライブラリに固有のやり方です)。
他の方法で優先度を低く設定する方法や、PerformanceCounter /その他のCPUモニタを使用してオーバーヘッドを追加する方法について知っていますか?ありがとう。
[この](http://stackoverflow.com/a/482622/884410)答え –
をチェックしてください、あなたは必ずあなたの問題はCPU使用率ではなく、ディスクI/Oですか? –
@MattBurland - yup - それを掲載しようとしています。私はちょうど、CPUバインドされたタスクのための最適なスレッドプール深さの調査を行ってきました。私はプールスレッドが 'THREAD_PRIORITY_BELOW_NORMAL'に設定されているので、8/16/32/80/800スレッドを4/8コアで100%実行していましたが、ブラウザなどはすべて正常に動作しました。 –