我正在使用 Threadpool 在 c# .NET 2.0 中进行一些并行处理。
代码 :
int MAXThreads=GetConfigValue("MaxThreadLimit"); //This value is read from app.config
ManualResetEvent[] doneEvents=new ManualResetEvent[MAXThreads];
for(int i=0;i<MaxThreads,i++)
{
doneEvents[i]=new ManualResetEvent(false);
//create workload
DoProcess job=new DoProcess(workload,doneEvents[i]);
ThreadPool.QueueUserWorkItem(job.ThreadPoolCallBack,i);
}
WaitHandle.WaitAll(doneEvents);
//proceed
Class DoProcess
{
private WorkLoad load;
private ManualResetEvent doneEvent;
public DoProcess(WorkLoad load,ManualResetEvent doneEvent)
{
this.load=load;
this.doneEvent=doneEvent;
}
public void ThreadPoolCallBack(object index)
{
//Do Processing
doneEvent.Set();
}
}
MAXThreads 值正在从配置中读取,但我想这与生成的实际线程数无关。只有少数约 4-5 个线程处理所有工作负载。我希望线程数固定在 20 左右。我怎样才能做到这一点?我错过了什么吗?..SetMaxThreads 解决了这个问题吗?..上面的代码将在四核 cpu 上运行。