3

私は最近、(Visual Studio Performance Wizard を使用して) アプリケーション プロファイリングをいろいろ試していました。同時実行インジケーターを操作しているときに、アプリケーションが複数のスレッド (バックグラウンドとフォアグラウンドの両方) で実行されている場合、クロスコア コンテキスト スイッチ レートが非常に高いという事実に気付きました。

一般に、多数のクロスコア コンテキスト スイッチがアプリケーションのパフォーマンスに悪影響を与える可能性があることを知っているため、最小限に抑えたいと考えています。

同時に実行されるスレッドの数を最小限に抑える以外に、.NET アプリケーションでこれを行うにはどのような方法がありますか?

4

2 に答える 2

1

これらのスレッドの一部を単一のコアに関連付けることができます。ただし、CLR/OS が使用可能なコアにスレッドをスケジュールできなくなり、実際にはパフォーマンスが低下する可能性があるため、これを行うときは細心の注意を払う必要があります。

これを行うには、BeginThreadAffinityメソッドを使用して、スレッドを特定のプロセッサまたはコアの ID に固定したままにすることができます。

于 2010-07-28T15:40:00.223 に答える