我正在使用Threadpool在c#.NET 2.0中執行一些並行處理。線程池QueueUserWorkItem不使用SetMaxThreads,GetMaxThreads
代碼:正在從配置讀取
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上運行。
你可以升級到.net 4.0嗎? –
這不是由我組織:( – techknowfreak
QueueUserWorkItem不使用SetMaxThreads會導致線程數支持繼續加大 – zangw