用ManulResetEvent实现生产者消费者,声明了两个ManulResetEvent类型变量,其实用一个也可以。
现在用AutoResetEvent实现。Auto和Manual的区别是Auto只唤醒一个线程,Manual是唤醒所有。
public class AreTest { AutoResetEvent are; public AreTest(AutoResetEvent are) { this.are = are; } public void Add() { while (true) { Thread.Sleep(1000); Console.WriteLine(Thread.CurrentThread.Name + " 生产者"); are.Set(); Console.WriteLine("通知消费者"); are.Reset(); Console.WriteLine("停止生产者"); are.WaitOne(); } } public void Del() { while (true) { Thread.Sleep(2000); Console.WriteLine(Thread.CurrentThread.Name + " 消费者"); are.Set(); Console.WriteLine("通知生产者"); are.Reset(); Console.WriteLine("停止消费者"); are.WaitOne(); } } }