0
但是,在Windows任務管理器中,它只展示了只使用一個特定的內核,我認爲下列方法將線程分配給多核處理器以執行任務。如何使這5個線程平行?ThreadPool中的C#並行線程
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你會找到答案。 – 2012-03-01 08:26:44
第一次簡單的檢查 - 你在任務管理器中看到哪個線程的數量?線程到內核的分配是操作系統的一部分,而不是應用程序。 – weismat 2012-03-01 08:31:17
爲什麼在已經在線程池中執行的代碼中使用'Parallel.For'? – Tudor 2012-03-01 10:19:21