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();
            }
        }
    }
  • 相关阅读:
    android前台渲染图片
    Neo4j 无法登录
    缺少less-loader ,版本不易过高
    入门测试,扒拉百度搜索结果
    Selenium 安装注意事项
    测试脚本
    设置 清理 SQL SERVER LOG
    查询SQL server 对象存储信息
    Common.Logging 组件版本兼容问题
    3.启动后端
  • 原文地址:https://www.cnblogs.com/jck34/p/2720487.html
Copyright © 2011-2022 走看看