Add bool return to stopThread

This commit is contained in:
Vinnie Falco
2013-08-04 18:06:58 -07:00
parent fd14957072
commit c8837d07e7
2 changed files with 19 additions and 6 deletions

View File

@@ -171,8 +171,10 @@ bool Thread::waitForThreadToExit (const int timeOutMilliseconds) const
return true; return true;
} }
void Thread::stopThread (const int timeOutMilliseconds) bool Thread::stopThread (const int timeOutMilliseconds)
{ {
bool cleanExit = true;
// agh! You can't stop the thread that's calling this method! How on earth // agh! You can't stop the thread that's calling this method! How on earth
// would that work?? // would that work??
bassert (getCurrentThreadId() != getThreadId()); bassert (getCurrentThreadId() != getThreadId());
@@ -185,21 +187,30 @@ void Thread::stopThread (const int timeOutMilliseconds)
notify(); notify();
if (timeOutMilliseconds != 0) if (timeOutMilliseconds != 0)
waitForThreadToExit (timeOutMilliseconds); {
cleanExit = waitForThreadToExit (timeOutMilliseconds);
}
if (isThreadRunning()) if (isThreadRunning())
{ {
bassert (! cleanExit);
// very bad karma if this point is reached, as there are bound to be // very bad karma if this point is reached, as there are bound to be
// locks and events left in silly states when a thread is killed by force.. // locks and events left in silly states when a thread is killed by force..
bassertfalse;
Logger::writeToLog ("!! killing thread by force !!");
killThread(); killThread();
threadHandle = nullptr; threadHandle = nullptr;
threadId = 0; threadId = 0;
cleanExit = false;
}
else
{
cleanExit = true;
} }
} }
return cleanExit;
} }
//============================================================================== //==============================================================================

View File

@@ -109,8 +109,10 @@ public:
thread to finish before killing it by force. A negative thread to finish before killing it by force. A negative
value in here will wait forever. value in here will wait forever.
@see signalThreadShouldExit, threadShouldExit, waitForThreadToExit, isThreadRunning @see signalThreadShouldExit, threadShouldExit, waitForThreadToExit, isThreadRunning
@returns true if the thread exits, or false if the timeout expires first.
*/ */
void stopThread (int timeOutMilliseconds = -1); bool stopThread (int timeOutMilliseconds = -1);
//============================================================================== //==============================================================================
/** Returns true if the thread is currently active */ /** Returns true if the thread is currently active */