zoukankan      html  css  js  c++  java
  • 细分线程的等待(WaitAny,WaitAll),区别于Thread.Join

    关键字:
         WaitHandle,
            封装等待对共享资源的独占访问的操作系统特定的对象。
            使用此类的静态方法阻塞一个线程,直到一个或多个同步对象接收到信号。
         WaitAll,等待所有指定执行线程结束之后返回。
         WaitAny,等待任何一个指定执行线程结束之后返回。
         AutoResetEvent,
            该类表示一个本地等待处理事件,在释放了单个等待线程以后,该事件会在终止时自动重置。
         ManualResetEvent
            不会自动重新设置。

    例子:
    AutoResetEvent event1 = new AutoResetEvent(false);
    AutoResetEvent event2 = new AutoResetEvent(false);
    AutoResetEvent event3 = new AutoResetEvent(false);

    public void Use3ChildThreads()
    {
        Thread vThread1 = new Thread(new ThreadStart(Method1));
        Thread vThread2 = new Thread(new ThreadStart(Method2));
        Thread vThread3 = new Thread(new ThreadStart(Method3));

        AutoResetEvent[] vEventInProgress = new AutoResetEvent[3];
        {
             event1,
             event2,
             event3
        }

        vThread1.Start();
        vThread2.Start();
        vThread3.Start();

        WaitHandle.WaitAny(vEventInProgress);

        //continue code

    }

    public void Method1()
    {
        Thread.Sleep(1000);
        event1.Set();
    }

    public void Method2()
    {
        Thread.Sleep(2000);
        event2.Set();
    }

    public void Method3()
    {
        Thread.Sleep(3000);
        event3.Set();
    }
  • 相关阅读:
    RF简介
    ADB & FASTBOOT COMMAND ON WINDOWS
    通过Mac电脑安装apk 和 ipa到安卓和苹果手机
    Mac搭建移动端自动化环境遇到的node安装失败的坑与解决方法
    Git 连接pycharm
    Appium环境搭建和命令
    穿戴设备(智能手表)移动端测试浅谈1
    IOS UIImageView的contentMode属性
    IOS OC数据类型
    IOS textField(textview)字数判断
  • 原文地址:https://www.cnblogs.com/si812cn/p/1222915.html
Copyright © 2011-2022 走看看