代码之家  ›  专栏  ›  技术社区  ›  LJM Tim Schmelter

C连接螺纹

  •  3
  • LJM Tim Schmelter  · 技术社区  · 16 年前

    我试图对C中的多线程有一个很好的理解,我对thread.join方法的适用性有点困惑。微软说它“在线程终止前阻止调用线程。”有两个问题:

    1. 下面的例子中,当另一个线程朝着终止工作时,哪个线程实际上被阻塞了?

    2. 一个线程被阻塞,而另一个线程朝着终止执行,这一事实是否实际上违背了多线程的目的?(所以我假设你只想在某些情况下加入。那可能是什么?)

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

    我还应该注意到,完全有可能我在这里做的不正确。

    2 回复  |  直到 16 年前
        1
  •  3
  •   John Gietzen    16 年前

    Main 在之前被阻止 oThread 完成。

    其思想是,您可以在线程上干净地终止,并等待它自己清理干净,而不是草率地杀死线程。

    它还可以用于启动一批三个或四个独立进程,然后在所有进程完成后继续。

        2
  •  0
  •   Jeremy Huiskamp    16 年前
    1. 运行main()方法块的线程。

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