1

基本的にマルチスレッドになる Windows アプリケーションを C# で作成しています。しかし、このアプリケーションは Celeron/P-IV システムから Core i7 システムまで実行できるため、修正中です。そのため、このアプリケーションで生成するスレッドの数を決定する方法を決定できません。

CPU の最大パワーを活用し、アプリケーションが遅延/スローダウン/フリーズしないようにするために使用されるプロセッサに応じて、生成できるスレッドの数を決定する方法はありますか? あなたが使用する一般的な式はありますか?

ありがとう。

4

3 に答える 3

2

の使用を検討しThreadPoolます。私の知る限り、.NET フレームワーク自体が最適な数のスレッドを管理します ( http://msdn.microsoft.com/en-us/library/0ka9477y.aspx )。

于 2012-06-10T13:17:01.443 に答える
1

Environment.ProcessorCountあなたが探しているものです。

質問の 2 番目の部分については、異なる数のスレッドをテストするのが最善の方法です。それはすべて、スレッドが正確に何をしているか、ブロックに多くの時間を費やしているか、共通のシステム リソースを共有しているか、お互いのキャッシュ ラインにヒットしているかなどに依存するため、この種の一般的な式を実際に与えることはできません。もの。それはすべて、特定のスレッドの動作に大きく依存しています。

于 2012-06-10T13:08:00.970 に答える
1

使用できる論理プロセッサの数を取得するにはSystem.Environment.ProcessorCount、ただし、ハイパースレッディング対応システムの実際のプロセッサ/コア数とは異なります。より正確な情報を取得するには、WMI メタデータWin32_ComputerSystem.NumberOfProcessorsWin32_ComputerSystem.NumberOfLogicalProcessors.

ただし、システムにスケジューリングを任せて、 TasksThreadPoolなどの高レベルのマルチスレッド サブシステムの 1 つを使用することをお勧めします。

于 2012-06-10T13:16:31.977 に答える