检查Windows中的线程是否存在

时间:2012-12-11 23:00:54

标签: windows multithreading

我最近尝试编写代码来检查Windows中的线程是否存在。我搜索了这个论坛,发现了类似的讨论:How to check if a process or thread is alive or not given their IDs in C++?

我知道我可以使用OpenThread API。但是它似乎在我的代码中不起作用如下。

DWORD WINAPI myThread( LPVOID lpParam )
{
    cout<<"child thread"<<endl;
    return 0;
}

int main(void)
{
    DWORD  lTldID = 0;
    HANDLE lTldHD = CreateThread(NULL, 0, myThread, 0, 0, &lTldID);

    WaitForSingleObject(lTldHD, INFINITE);
    HANDLE lHD = OpenThread(0x0040, FALSE, lTldID);
    return 1;
}

我希望HANDLE lHD应为NULL,因为线程'myThread'应该在调用OpenThread()时完成。但是,我总是得到像0x00000068这样的非NULL值。我不知道为什么会这样。有什么想法吗?

谢谢, Xiaomo

1 个答案:

答案 0 :(得分:0)

BOOL WINAPI GetExitCodeThread(
  _In_  HANDLE  hThread,
  _Out_ LPDWORD lpExitCode
);

此功能立即返回。如果指定的线程尚未终止且函数成功,则返回的状态为STILL_ACTIVE