From: Marco Costalba Date: Tue, 17 Mar 2015 06:31:45 +0000 (+0100) Subject: Fix a bogus use of mutex X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=2e8552db76092a7e4fa8f7278231d66e26a756d9;hp=a4b2eeea759f10ca1ce864c2a30a990a9a991aa9;ds=sidebyside Fix a bogus use of mutex Spinlock must be used instead. Tested for no regression at 15+0.05 th 4: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 25928 W: 4303 L: 4190 D: 17435 No functional change. Resolves #297 --- 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);