zoukankan      html  css  js  c++  java
  • ManualResetEvent同步与互斥

    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 + ":等着上菜无聊先玩会手机游戏");
                    }
                }
            }
        }
    }
    

     

  • 相关阅读:
    hdu 1754 I Hate It
    hdu 2546 饭卡
    hdu 4506 小明系列故事——师兄帮帮忙
    hdu 3665 Seaside
    hdu 3790 最短路径问题
    hdu 1869 六度分离
    最长递增字串的三种做法
    问题集???
    IOS开发学习 碎片S
    超级台阶 (NYOJ—76)
  • 原文地址:https://www.cnblogs.com/wonderfuly/p/8584957.html
Copyright © 2011-2022 走看看