Signed-off-by: Marco Costalba <mcostalba@gmail.com>
{
// Slave threads can exit as soon as AllThreadsShouldExit raises,
// master should exit as last one.
{
// Slave threads can exit as soon as AllThreadsShouldExit raises,
// master should exit as last one.
- if (AllThreadsShouldExit && !waitSp)
+ if (AllThreadsShouldExit)
threads[threadID].state = THREAD_TERMINATED;
return;
}
// If we are not thinking, wait for a condition to be signaled
// instead of wasting CPU time polling for work.
threads[threadID].state = THREAD_TERMINATED;
return;
}
// If we are not thinking, wait for a condition to be signaled
// instead of wasting CPU time polling for work.
- while ( threadID != 0
- && (AllThreadsShouldSleep || threadID >= ActiveThreads))
+ while (AllThreadsShouldSleep || threadID >= ActiveThreads)
threads[threadID].state = THREAD_SLEEPING;
#if !defined(_MSC_VER)
threads[threadID].state = THREAD_SLEEPING;
#if !defined(_MSC_VER)
// If this thread has been assigned work, launch a search
if (threads[threadID].state == THREAD_WORKISWAITING)
{
// If this thread has been assigned work, launch a search
if (threads[threadID].state == THREAD_WORKISWAITING)
{
- assert(!AllThreadsShouldExit);
+ assert(!AllThreadsShouldExit && !AllThreadsShouldSleep);
threads[threadID].state = THREAD_SEARCHING;
threads[threadID].state = THREAD_SEARCHING;