我有多个线程在同一个线程安全函数上工作。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()
}