AutoResetEvent实现生产者消费者

用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 + "\t生产者");

                    are.Set();
                    Console.WriteLine("通知消费者");
                    are.Reset();
                    Console.WriteLine("停止生产者");
                    are.WaitOne();

                }

            }
            public void Del()
            {
                while (true)
                {
                    Thread.Sleep(2000);
                    Console.WriteLine(Thread.CurrentThread.Name + "\t消费者");
                    are.Set();
                    Console.WriteLine("通知生产者");
                    are.Reset();
                    Console.WriteLine("停止消费者");
                    are.WaitOne();
                }
            }
        }

 

posted @ 2015-06-28 18:48  nbu_djw  阅读(181)  评论(0编辑  收藏  举报