diff --git a/src/search.cpp b/src/search.cpp index 08a77956..b08b687a 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1599,7 +1599,7 @@ void Thread::idle_loop() { && !(this_sp && this_sp->slavesMask.none()) && !searching) { - if ( !this_sp + if ( !this_sp && !Threads.main()->thinking) { std::unique_lock lk(mutex); @@ -1613,12 +1613,12 @@ void Thread::idle_loop() { // If this thread has been assigned work, launch a search while (searching) { - mutex.lock(); + spinlock.acquire(); assert(activeSplitPoint); SplitPoint* sp = activeSplitPoint; - mutex.unlock(); + spinlock.release(); Stack stack[MAX_PLY+4], *ss = stack+2; // To allow referencing (ss-2) and (ss+2) Position pos(*sp->pos, this);