Thread가 완전히 종료된 것을 확신해야 하는 경우에는
if ( ::WaitForSingleObject(pThread->m_hThread, INFINITE) )
{
// 이곳은쓰레드가확실히종료된상태임
}
와 같이 하면 된다. Thread가 죽어 버려서 먹통이 되는 경우까지 대비하려면
DWORD result;
result = ::WaitForSingleObject(pThread->m_hThread, 1000); // 1초기다림
if ( result == WAIT_OBJECT_0 )
{
// 이곳은쓰레드가확실히종료된상태임
}
else if ( result == WAIT_TIMEOUT )
{
// 1초가지나도쓰레드가종료되지않은상태
}
이 방법을 사용해야 한다. 어떤 Thread가 현재 실행 중인지 알고 싶을 때는
if ( ::WaitForSingleObject(pThread->m_hThread, 0 ) == WAIT_TIMEOUT )
{
// pThread 실행중
}
else
{
// pThread가실행중이아님
}