X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=0f2373cd28fd28838c1e79990c5d26349ae554a2;hp=9923ef1dbc1fdf5ce2d6493dc05662d599900e29;hb=500c7f44ab46ca6303c465586a17fa63b8488cb4;hpb=b69d9ee3f720ba04bbc22eb24203123f4b79707f diff --git a/src/search.cpp b/src/search.cpp index 9923ef1d..0f2373cd 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -2154,7 +2154,7 @@ void Thread::idle_loop(SplitPoint* sp) { // instead of wasting CPU time polling for work. while ( do_sleep || do_terminate - || (Threads.use_sleeping_threads() && state == Thread::AVAILABLE)) + || (Threads.use_sleeping_threads() && !is_searching)) { assert((!sp && threadID) || Threads.use_sleeping_threads()); @@ -2180,19 +2180,17 @@ void Thread::idle_loop(SplitPoint* sp) { // particular we need to avoid a deadlock in case a master thread has, // in the meanwhile, allocated us and sent the wake_up() call before we // had the chance to grab the lock. - if (do_sleep || state == Thread::AVAILABLE) + if (do_sleep || !is_searching) cond_wait(&sleepCond, &sleepLock); lock_release(&sleepLock); } // If this thread has been assigned work, launch a search - if (state == Thread::WORKISWAITING) + if (is_searching) { assert(!do_terminate); - state = Thread::SEARCHING; - // Copy split point position and search stack and call search() SearchStack ss[PLY_MAX_PLUS_2]; SplitPoint* tsp = splitPoint; @@ -2210,15 +2208,15 @@ void Thread::idle_loop(SplitPoint* sp) { else assert(false); - assert(state == Thread::SEARCHING); + assert(is_searching); - state = Thread::AVAILABLE; + is_searching = false; // Wake up master thread so to allow it to return from the idle loop in // case we are the last slave of the split point. if ( Threads.use_sleeping_threads() && threadID != tsp->master - && Threads[tsp->master].state == Thread::AVAILABLE) + && !Threads[tsp->master].is_searching) Threads[tsp->master].wake_up(); }