15,471
社区成员
发帖
与我相关
我的任务
分享
CleanupThread()
{
//get handle from thread-list
waitfor...()
//terminate thread
//close thread handle
}
WorkThread()
{
//do something
clear();//tell CleanupThread close thread
return 0
}
UIThread()
{
//create WorkThread then add to thread-list
Sleep(time);
............//do something
//这里如何判断WorkThread已经退出?
}
//请问在UIThread中如何叛断WorkThread已经退出?
//注意,在CleanupThread 调用了CloseHandle(); 所以WaitFor...与GetExitCode..应该都不行吧。
//因为对一个已经被关闭了的handle操作,就如同对已经delete的 pointer操作一样,结果是未知的
//我所想到的办法就是 设一全局变量bWrokThreadExit. 在WorkThread退出的地方加bWrokThreadExit= TRUE
//但我觉得这是个不好的办法。一两个线程情况下这个办法可以用用,但如果我有很多线程呢?
DWORD dwExitCode = 0;
if (GetExitCodeThread(hThread, &dwExitCode) && (STILL_ACTIVE != dwExitCode)
{
// .....
}