consume less CPU while waiting for thread to terminate (patch 883268)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -777,15 +777,24 @@ wxThreadInternal::WaitForTerminate(wxCriticalSection& cs,
|
|||||||
// although the thread might be already in the EXITED state it might not
|
// although the thread might be already in the EXITED state it might not
|
||||||
// have terminated yet and so we are not sure that it has actually
|
// have terminated yet and so we are not sure that it has actually
|
||||||
// terminated if the "if" above hadn't been taken
|
// terminated if the "if" above hadn't been taken
|
||||||
do
|
for ( ;; )
|
||||||
{
|
{
|
||||||
if ( !::GetExitCodeThread(m_hThread, (LPDWORD)&rc) )
|
if ( !::GetExitCodeThread(m_hThread, (LPDWORD)&rc) )
|
||||||
{
|
{
|
||||||
wxLogLastError(wxT("GetExitCodeThread"));
|
wxLogLastError(wxT("GetExitCodeThread"));
|
||||||
|
|
||||||
rc = (wxThread::ExitCode)-1;
|
rc = (wxThread::ExitCode)-1;
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} while ( (DWORD)rc == STILL_ACTIVE );
|
|
||||||
|
if ( (DWORD)rc != STILL_ACTIVE )
|
||||||
|
break;
|
||||||
|
|
||||||
|
// give the other thread some time to terminate, otherwise we may be
|
||||||
|
// starving it
|
||||||
|
::Sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
if ( pRc )
|
if ( pRc )
|
||||||
*pRc = rc;
|
*pRc = rc;
|
||||||
|
Reference in New Issue
Block a user