我正在尝试很好地理解C#中的多线程,我对Thread.Join方法的适用性有点困惑。微软称它“阻止调用线程直到线程终止。”两个问题:
鉴于以下示例,哪个线程实际被阻止而另一个线程正在终止?
当一个线程被阻塞而另一个线程正在执行终止时,这个事实是否真的无法实现多线程的目的? (所以我假设你只想在某些情况下加入。那可能是什么?)
static int Main() { Alpha oAlpha = new Alpha(); Thread oThread = new Thread(new ThreadStart(oAlpha.Beta)); oThread.Start(); oThread.Join(); }
我还应该注意到,我完全没有在这里做正确的事情。
答案 0 :(得分:3)
Main
被屏蔽,直到oThread
完成。
这个想法是你可以干净地终止线程并等待它自己清理,而不是懒散地杀死线程。
这对于启动一批三个或四个独立进程,然后在所有进程完成后继续进行也很有用。
答案 1 :(得分:0)
运行Main()方法的线程阻塞。
例如,如果您不希望主方法退出,直到完成所有工作,则线程通常需要同步。在您的示例中,没有任何好处,但您可以在Start()和Join()调用之间插入有用的工作。如果您分离多个线程然后将它们全部连接起来,这将非常有用。