私は以下の構造の単純なマルチスレッドプログラムを持っています。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.
}
これはうまくいきますが、同時に実行されるtheadsの数を制限する問題があります。例えば、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がかなり重い作業をしていない限り、呼び出しごとに新しいスレッドを作成するのに多くの時間を費やすことになります。 –