多线程信号源_红绿灯
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static AutoResetEvent greenLight = new AutoResetEvent(false);
static AutoResetEvent redLight = new AutoResetEvent(false);
static void Main(string[] args)
{
Thread t1 = new Thread(new ThreadStart(M1));
Thread t2 = new Thread(new ThreadStart(M2));
t1.Start();
t2.Start();
//这个是主线程语句,相当于说现在是有3个线程。
greenLight.Set();
}
static void M1()
{
while (true)
{
if (greenLight.WaitOne())
{
Console.WriteLine("绿灯了。行人过马路!");
Thread.Sleep(3000);
redLight.Set();//红灯了
}
}
}
static void M2()
{
while (true)
{
if (redLight.WaitOne())
{
Console.WriteLine("红灯了。行人等待!");
Thread.Sleep(3000);
greenLight.Set();
}
}
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static AutoResetEvent greenLight = new AutoResetEvent(false);
static AutoResetEvent redLight = new AutoResetEvent(false);
static void Main(string[] args)
{
Thread t1 = new Thread(new ThreadStart(M1));
Thread t2 = new Thread(new ThreadStart(M2));
t1.Start();
t2.Start();
//这个是主线程语句,相当于说现在是有3个线程。
greenLight.Set();
}
static void M1()
{
while (true)
{
if (greenLight.WaitOne())
{
Console.WriteLine("绿灯了。行人过马路!");
Thread.Sleep(3000);
redLight.Set();//红灯了
}
}
}
static void M2()
{
while (true)
{
if (redLight.WaitOne())
{
Console.WriteLine("红灯了。行人等待!");
Thread.Sleep(3000);
greenLight.Set();
}
}
}
}
}