diff --git a/src/search.cpp b/src/search.cpp index 0f2373cd..44084753 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -2158,17 +2158,16 @@ void Thread::idle_loop(SplitPoint* sp) { { assert((!sp && threadID) || Threads.use_sleeping_threads()); - // Grab the lock to avoid races with Thread::wake_up() - lock_grab(&sleepLock); - // Slave thread should exit as soon as do_terminate flag raises if (do_terminate) { assert(!sp); - lock_release(&sleepLock); return; } + // Grab the lock to avoid races with Thread::wake_up() + lock_grab(&sleepLock); + // If we are master and all slaves have finished don't go to sleep if (sp && all_slaves_finished(sp)) {