zoukankan      html  css  js  c++  java
  • Part 92 Significance of Thread Join and Thread IsAlive functions

    Thread.Join & Thread.IsAlive functions

    Join blocks the current thread and makes it wait until the thread on which Join method is invoked completes.Join method also has a overload where we can specify the timeout. If we don't specify the timeout the calling thread waits indefinitely(无限期地), until the thread on which Join() is invoked completes. This overloaded Join(int millisecondesTimeout) method returns boolean. True if the thread has terminated(终止) otherwise false.

    Join is particularly(特别地) useful when we need to wait and collect result from a thread execution or if we need to do some clean-up after the thread has completed.

    IsAlive returns boolean. True if the thread is still executing otherwise false.

    public static void Main(string[] args)
            {
                Console.WriteLine("main start");
                Thread t1 = new Thread(ThreadFunction1);
                t1.Start();
                Thread t2 = new Thread(ThreadFunction2);
                t2.Start();
                if(t1.Join(1000))
                {
                    Console.WriteLine("threadfunction1 end");
                }
                else
                {
                    Console.WriteLine("threadfunction1 still working");
                }
                if(t1.IsAlive)
                {
                    for (int i = 1; i < 10; i++)
                    {
                        Console.WriteLine("threadfunction1 still working...");
                        Thread.Sleep(500);                    
                    }
                }
                Console.WriteLine("main end");
            }
    
            public static void ThreadFunction1()
            {
                Console.WriteLine("threadfunction1 start");
                Thread.Sleep(5000);
                Console.WriteLine("threadfunction1 end");
            }
    
            public static void ThreadFunction2()
            {
                Console.WriteLine("threadfunction2 start");
            }
  • 相关阅读:
    StrBlobPtr类——weak_ptr访问vector元素
    StrBlob类——智能指针作为成员
    关于智能指针类型shared_ptr的计数问题
    桌面计算器——可调用对象练习
    union
    虚析构函数
    条款04 确定对象被使用前已先被初始化
    条款03 尽可能使用const
    Bugku-CTF之web8(txt????)
    Bugku-CTF之各种绕过
  • 原文地址:https://www.cnblogs.com/gester/p/4870446.html
Copyright © 2011-2022 走看看