同じスレッドセーフ関数でマルチスレッドが動作しています。X 回の反復後、firstThread() に到達した最初のスレッドは firstThread() を実行し、スレッドが firstThread() で終了するまで他のスレッドが続行しないようにします。firstThread() に到達した最初のスレッドのみが実行され、他のスレッドは実行されません。レースのようなもので、最初にゴールした人が勝者です。firstThread() が完了すると、再び制限に達するまですべてのスレッドが続行されます。これを達成するための最良の方法のアイデアはありますか?
private void ThreadBrain()
{
Thread[] tList = new Thread[ThreadCount];
sw.Start();
for (int i = 0; i < tList.Length; i++)
{
tList[i] = new Thread(ThProc);
tList[i].Start();
}
foreach (Thread t in tList)
if (t != null) t.Join();
}
private void ThProc()
{
doWork();
}
private void firstThread()
{
//do some work
loopCount=0;
}
private void doWork()
{
//do some work
loopCount++;
//first thread to reach this point calls firstThread() and prevent other threads from continuing until current thread completes firstThread()
If(loopCount>=loopLimit)firstThread()
}