日期:2014-05-20 浏览次数:21037 次
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
ManualResetEvent[] MREs = new ManualResetEvent[3];
int i;
for (i = 0;i < 3;i++)
{
MREs[i] = new ManualResetEvent(false);
}
for (i = 0;i < 15;i += 5)
{
ThreadPool.QueueUserWorkItem(state =>
{
int x = (int)state;
for (int j = 1;j <= 75;j++)
{
MREs[x / 5].WaitOne();
if ((((j - 1) % 15) - x < 5) && (((j - 1) % 15) - x >= 0))
Console.WriteLine(j);
if (j % 5 == 0)
{
MREs[x / 5].Reset();
MREs[(x / 5 + 1) % 3].Set();
}
}
MREs[x / 5].Set();
}, i);
}
MREs[0].Set();
WaitHandle.WaitAll(MREs);
Console.ReadLine();
}
}