代码之家  ›  专栏  ›  技术社区  ›  Uhall

如何确定Win32线程是否已终止?

  •  16
  • Uhall  · 技术社区  · 16 年前

    如何确定Win32线程是否已终止?

    文件 GetExitCodeThread 警告不要因此而使用它,因为错误代码STILL_ACTIVE可能会因其他原因而返回。

    谢谢你的帮助! :)

    2 回复  |  直到 16 年前
        1
  •  39
  •   Michael Burr    16 年前

    MSDN提到“当一个线程终止时,线程对象会达到一个信号状态,满足任何等待该对象的线程”。

    因此,您可以通过检查线程句柄的状态来检查线程是否已终止——无论是否发出信号:

    DWORD result = WaitForSingleObject( hThread, 0);
    
    if (result == WAIT_OBJECT_0) {
        // the thread handle is signaled - the thread has terminated
    }
    else {
        // the thread handle is not signaled - the thread is still alive
    }
    
        2
  •  7
  •   Shog9    16 年前

    您链接到的文档警告不要使用 STILL_ACTIVE 作为返回代码,因为它无法与用于指示活动线程的返回值区分开来。 因此,不要将其用作返回值,这样就不会出现这个问题。