我有一個簡單的多線程程序,結構如下。控制c中併發線程數的最佳方式#
public void someFunction()
{
List<object> objList = new List<object>();
//objList populated here
foreach(object o in objList)
{
Thread aThread = new Thread (new ParameterizedThreadStart(doSomething));
aThread.Start(o);
}
}
static void doSomething(object o)
{
//Do something with o.
}
這很好,但我遇到了限制同時運行的數量的問題。假設我想定義int maxThreads = 25
爲例。我能想到這樣做的最好的辦法是這樣的:
SomeThreadsafeCounter c = new SomeThreadsafeCounter();
foreach(object o in objList)
{
while (c < 26){ wait; }
c++;
Thread aThread = new Thread (new ParameterizedThreadStart(doSomething));
aThread.Start(o);
c--;
}
我敢肯定這是不是去做正確的方法,有沒有更好的辦法?
除非`doSomething`正在做一些非常繁重的工作,否則您可能會浪費大量時間爲每次調用產生一個新線程。 – 2010-11-24 10:53:09