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();
    }
  • 相关阅读:
    python实现Socket通信原理
    SSL加密原理
    HackTheBox实战
    wireshark实战应用(长期更新,工作随笔)
    DNS域传输漏洞复现
    网站开发语言判断
    Linux:Day39(上) mysql基础
    Linux:Day38(下)
    Linux:Day38(上)
    Linux:Day37(上)
  • 原文地址:https://www.cnblogs.com/si812cn/p/1222915.html
Copyright © 2011-2022 走看看