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();
    }
  • 相关阅读:
    Java 异常
    【转】Java 内部类总结
    【转】Java中的static关键字解析
    【转】事务及事务隔离级别
    【转】事务并发的问题
    【转】hibernate对象三种状态
    iOS指南针
    CoreLocation 定位
    swift 2.2 语法 (下)
    swift 2.2 语法 (中)
  • 原文地址:https://www.cnblogs.com/si812cn/p/1222915.html
Copyright © 2011-2022 走看看