线程句柄,可以粗略的理解为线程的地址,通过这个句柄可以找到对应的线程,进而对线程进行操作。
线程句柄关闭并不意味着线程结束,只是减少了该线程的引用。
如果线程启动后,不需要对它进行别的操作,即可调用::CloseHandle(m_hThread)关闭线程句柄。
::WaitForSingleObject(m_hThread, 0),传入的参数若为线程句柄,线程正常运行时,为无信号状态,否则为有信号状态。
因此就可以用m_hThread != NULL && ::WaitForSingleObject(m_hThread, 0) == WAIT_TIMEOUT来判断线程是否已经启动,
用m_hThread == NULL || ::WaitForSingleObject(m_hThread, 0) != WAIT_TIMEOUT来判断线程是否已经结束,
当然,前提是线程句柄m_hThread没有被CloseHandle关闭。