2012-03-08 11 views
2

したがって、並行キューと2つのスレッドがあります。私はデータとキューを通過している1つのスレッドがあります。私は情報をデキューして結果としていくつかのアクションを実行する別のスレッドを持っています。プロセッサコア使用量.netプラットフォームのプロデューサコンシューマとのマルチスレッド化

これらの2つのスレッドが動作している可能性があります[明らかに、どこで動作するかを別のコアで保証することはできませんか?私はasp.net [MVC] 4.0を使用しています。私はワーカーのプロセスのようにすべてが1コアに制限されているのだろうかと思います。私はマルチコアシステムを持っており、これを利用できるようにしたいと考えています。私はウェブガーデンを使用したいと思いますが、キューは静的なクラスにあり、ウェブガーデンのワーカープロセス間で共有されないと思います。

パラレルで動作する240個までの操作を実行する必要があるため、スレッドの1つでParallel.ForEachを実行することも検討していました。もう一度これをワーカープロセスのコアに結びつけて、他のコアで実行しますか?ほとんどのマルチコアシステムで事前

+0

他のコアを使っても問題ありません。しかし、ASP.NETのmスレッディングには、どのプロセスの下で、どのようにそのプロセスを維持するかといった他の課題があります。 –

答えて

0

おかげで、プロセスで実行中のスレッドは、異なるコアに周りにジャンプすることができます。 .NET Processクラスには書き込み可能なProcessorAffinityプロパティがあり、ビット単位のマスクを設定して特定のプロセッサ上の特定のプロセスでスレッドを実行できます。

これは、TPLに仕事をさせるだけの理由がないと言われていますか?あなたの質問はこれを避けていますが、この種の作業を行うように設定されており、すぐにすぐに(例えば、Parallel.ForEachなど)すぐれた仕事をします。細かい部分を制御するには、MaxDegreesOfParallelismを使用します。これにより、その特定のインスタンスへの同時操作の数が制限されます。

これに加えて、これが実際の問題であるかどうかを確認するために実行したことがありますか?

関連する問題