多条线程控制报数输出
public static void RunThread(uint peopleNum, uint maxValue)
{
AutoResetEvent[] zeroAre = new AutoResetEvent[peopleNum];
for (int i = 0; i < peopleNum; i++)
{
zeroAre[i] = new AutoResetEvent(false);
}
for (uint i = 0; i < peopleNum; i++)
{
uint nStart = i;
uint nEnd = i + 1;
if (i % peopleNum == peopleNum - 1)
{
nEnd = 0;
}
Task.Run(() =>
{
for (uint num = nStart; num < maxValue; num += peopleNum)
{
zeroAre[nStart].WaitOne();
if (num % peopleNum == nStart)
{
Console.WriteLine($"对{peopleNum}求余为{nStart}:{num}");
}
zeroAre[nEnd].Set();
}
});
}
zeroAre[0].Set();
}