C#加入线程

时间:2009-10-12 02:38:22

标签: c# multithreading

我正在尝试很好地理解C#中的多线程,我对Thread.Join方法的适用性有点困惑。微软称它“阻止调用线程直到线程终止。”两个问题:

  1. 鉴于以下示例,哪个线程实际被阻止而另一个线程正在终止?

  2. 当一个线程被阻塞而另一个线程正在执行终止时,这个事实是否真的无法实现多线程的目的? (所以我假设你只想在某些情况下加入。那可能是什么?)

  3. static int Main()
        {
          Alpha oAlpha = new Alpha();
          Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));
          oThread.Start();
          oThread.Join();
        }
    

    我还应该注意到,我完全没有在这里做正确的事情。

2 个答案:

答案 0 :(得分:3)

Main被屏蔽,直到oThread完成。

这个想法是你可以干净地终止线程并等待它自己清理,而不是懒散地杀死线程。

这对于启动一批三个或四个独立进程,然后在所有进程完成后继续进行也很有用。

答案 1 :(得分:0)

  1. 运行Main()方法的线程阻塞。

  2. 例如,如果您不希望主方法退出,直到完成所有工作,则线程通常需要同步。在您的示例中,没有任何好处,但您可以在Start()和Join()调用之间插入有用的工作。如果您分离多个线程然后将它们全部连接起来,这将非常有用。