thread.join是否同时启动所有线程

时间:2015-09-19 22:01:22

标签: c# multithreading

    Thread[] threads = new Thread[12];
    int temp;

    //_stopRequest = false;
    for (int i = 0; i < threads.Length - 1; i++)
    {
        temp = i;
        threads[temp] = new Thread(new ThreadStart(() => test(test1[temp],"start", temp)));
        threads[temp].Start();
        //threads[temp].Join();
    }

   for(int i=0; i<threads.Length-1; i++)
   {
     threads[i].Join();
   }

任何人都可以解释我

1 个答案:

答案 0 :(得分:3)

不,调用Start()时会启动线程。

如果你在Start()之后立即调用Join()(注释掉的代码),每个线程都将被启动,然后当前线程的执行将停止,直到第一个线程停止。所以它实际上就是一个单一的线程。

现在代码的方式,所有线程都被启动,然后当前线程等待所有已启动的线程完成。