From: Vadim Zeitlin Date: Sat, 7 Feb 2004 13:49:18 +0000 (+0000) Subject: consume less CPU while waiting for thread to terminate (patch 883268) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7d0bf46a34e2422c441ccccd9dffb799999bb6a8 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 --- diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp index f949283aad..e179d3683f 100644 --- a/src/msw/thread.cpp +++ b/src/msw/thread.cpp @@ -777,15 +777,24 @@ wxThreadInternal::WaitForTerminate(wxCriticalSection& cs, // 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 // terminated if the "if" above hadn't been taken - do + for ( ;; ) { if ( !::GetExitCodeThread(m_hThread, (LPDWORD)&rc) ) { wxLogLastError(wxT("GetExitCodeThread")); 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 ) *pRc = rc;