以下の方法では、タスクを実行するためにスレッドをマルチコアプロセッサに配布していますが、Windowsタスクマネージャでは特定のコアのみを使用していました。それら5つのスレッドのためにそれを並列にする方法は?ThreadPoolでの並列スレッド化
private void ActivateProcess
{
...
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker1));
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker2));
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker3));
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker4));
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker5));
}
...
private void Worker1(Object stateInfo)
{
try
{
//for (int i = 0; i < _NumberOfLoop; i++)
Parallel.For(0,(long)_NumberOfLoop, i =>
{
if (_ForceToStop)
throw new System.ArgumentException(
"Force stop at WorkerThread 1", "Aborted");
// Process: Process a tasks
...
});
}
catch (Exception ex)
{
...
}
}
私はここで答えを見つけるhttp://stackoverflow.com/questions/1718465/optimal-number-of-threads-per-coreと仮定します。 –
最初の簡単なチェック - タスク管理者の番号はどのスレッドに見えますか?コアへのスレッドの配布は、アプリケーションではなくOSの一部です。 – weismat
なぜ、スレッドプールですでに実行されているコードの中で 'Parallel.For'を使用していますか? – Tudor