在主线程中创建多个线程,如何在主线程中判断所有线程已经运行完毕?

解决方案 »

  1.   

    GetExitCodeThread也可以用WaitFor*系列函数。
      

  2.   

    其实可以这样!
    设计一个全局变量N,用于记录系统中生成的线程数!而后在每个线程的终止函数中用InterlockedDecrement(N)来对线程数减1,直至减为0即可证明全部线程已退出。由于终止函数与InterlockedDecrement都是线程安全的(严格地说,终止函数是将控制权移交给主线程处理的),故也不需要线程同步,比较简便!
      

  3.   

    我一般做法是弄一个TList之类的放在线程管理类中.
    当线程被创建首先去加锁,把自己加到List中,解锁.
    当线程结束的时候先加锁,把自己从List中删除,解锁.这样的好处是可以访问到任何子线程对象.如果不需要在外边访问子线程对象liangpei2008的办法不失一个好办法.
      

  4.   

    可以用的方法很多啊
    如果主线程就为了等待子线程可以用WAITFORMULTOBJECT;
    如果主线程是在结束的时候判断的话可以用循环判断你的线程是否已经结束了。
      

  5.   

    with mThread.Create() do
      OnTerminate:=mThreadDone;