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