zoukankan      html  css  js  c++  java
  • ManualResetEvent和AutoResetEvent的区别

    ManualResetEvent mre = new ManualResetEvent(false);
    AutoResetEvent are = new AutoResetEvent(false);
    
    mre.WaitOne() //当有信号时只能运行一个线程
    are.WaitOne() //有信号时可以同时运行多个线程

    ///Boy class

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace ConsoleApplication1
    {
        public class Boy
        {
            private AutoResetEvent mer;
            public Boy(AutoResetEvent m)
            {
                mer = m;
            }
    
            public void SendFloor()
            {
                Console.WriteLine("送花中");
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("...");
                    Thread.Sleep(500);
                }
                mer.Set();
                Console.WriteLine("\r\n花已经送到MM手中了,boss");
            }
        }
    }

    ///Main

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            public static AutoResetEvent mre = new AutoResetEvent(false);
            static void Main(string[] args)
            {
                Boy boy = new Boy(mre);
                for (int i = 0; i < 3; i++)
                {
    
    
                    Thread thread = new Thread(new ThreadStart(boy.SendFloor));
                    thread.Start();
                    mre.WaitOne();
                    Console.WriteLine("收到了吧,花我送的");
                }
                Console.ReadLine();
            }
        }
    }
  • 相关阅读:
    Silverlight Control(五)TimePicker
    《ASP.NET Core 3框架揭秘》笔记
    Hyper-V初体验
    debian初体验
    异步编程-编程指南
    Oracle查询优化读书笔记
    设计原则
    日志管理
    Git在Vs中的使用
    SVN使用备注
  • 原文地址:https://www.cnblogs.com/jck34/p/2720487.html
Copyright © 2011-2022 走看看