windows下线程退出,不导致内存泄露
我在CTrayDlg中开启一个线程:
m_hThread = CreateThread(NULL, 0, ThreadFunc, this, 0, &m_dwThreadID);
线程执行函数为
static DWORD WINAPI ThreadFunc(LPVOID lParam)
{
CTrayDlg *pDlg = (CTrayDlg*)lParam;
while(pDlg->m_bRunning)
{
...............................................
}
return pDlg->m_dwThreadID;
}
当我在CTrayDlg中设置m_bRunning为false,然后用GetExitCodeThread(m_hThread, &dwThreadID);
dwThreadID的值始终都是STILL_ACTIVE,获取不到线程函数退出时返回的 pDlg->m_dwThreadID,为什么啊?
我是这么实现的:
DWORD dwThreadID = STILL_ACTIVE;
while (dwThreadID != m_dwThreadID)
{
GetExitCodeThread(m_hThread, &dwThreadID);
Sleep(1000);
}
一直在循环里面。