X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=2e3f9d5663718ad4cac483c1d46b630cc5888d36;hb=c974d9ef3311c17810be63a3f68ffd44a4de3819;hp=ab9bcca3b781376cb1a5cef4dbb9eccfb1bdba9d;hpb=80810e4951f9447fd2b92faf56d01b60e6abd1a3;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index ab9bcca3..2e3f9d56 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -2583,17 +2583,18 @@ namespace { { // Slave threads can exit as soon as AllThreadsShouldExit raises, // master should exit as last one. - if (AllThreadsShouldExit && !waitSp) + if (AllThreadsShouldExit) { + assert(!waitSp); 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) { + assert(threadID != 0); threads[threadID].state = THREAD_SLEEPING; #if !defined(_MSC_VER) @@ -2613,7 +2614,7 @@ namespace { // 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; @@ -2959,12 +2960,9 @@ namespace { // This makes the threads to go to sleep AllThreadsShouldSleep = true; - // Wait for the threads to be all sleeping and reset flags - // to a known state. + // Reset flags to a known state. for (int i = 1; i < ActiveThreads; i++) { - while (threads[i].state != THREAD_SLEEPING); - // This flag can be in a random state threads[i].printCurrentLineRequest = false; }