using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            EventWaitTest zhangsan = new EventWaitTest("张三");
            EventWaitTest lisi = new EventWaitTest("李四");

            Thread t1 = new Thread(new ThreadStart(zhangsan.Consume));
            Thread t2 = new Thread(new ThreadStart(lisi.Consume));
            Thread t3 = new Thread(new ThreadStart(EventWaitTest.Product));

            t1.Start();
            t2.Start();
            t3.Start();

            Console.Read();

        }

        

    }

    public class EventWaitTest
    {
        private string name; //顾客姓名  
        //private static AutoResetEvent eventWait = new AutoResetEvent(false);  
        private static ManualResetEvent eventWait = new ManualResetEvent(false);
        private static ManualResetEvent eventOver = new ManualResetEvent(false);

        public EventWaitTest(string name)
        {
            this.name = name;
        }

        public static void Product()
        {
            Console.WriteLine("服务员:厨师在做菜呢,两位稍等");
            Thread.Sleep(2000);
            Console.WriteLine("服务员:宫爆鸡丁好了");
            eventWait.Set();
            while (true)
            {
                if (eventOver.WaitOne(1000, false))
                {
                    Console.WriteLine("服务员:两位请买单");
                    eventOver.Reset();
                }
            }
        }

        public void Consume()
        {
            while (true)
            {
                if (eventWait.WaitOne(1000, false))
                {
                    Console.WriteLine(this.name + ":开始吃宫爆鸡丁");
                    Thread.Sleep(2000);
                    Console.WriteLine(this.name + ":宫爆鸡丁吃光了");
                    eventWait.Reset();
                    eventOver.Set();
                    break;
                }
                else
                {
                    Console.WriteLine(this.name + ":等着上菜无聊先玩会手机游戏");
                }
            }
        }
    }
}

 

posted on 2018-03-16 20:31  游戏人间  阅读(102)  评论(0编辑  收藏  举报