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();

                }

            }

        }

 

你可能感兴趣的:(生产者消费者)