X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fthread.cpp;h=2dcbf91093dc7379d0281ccae235838d9c99f031;hb=32c504076f5a1d5c84f88c2d30a11c25ea2e5a6e;hp=10f432bd71bdf81b30af7eafdf7ff2606d046cc9;hpb=a56322fde813094afd8ffa60d12761f94e0bd3ef;p=stockfish diff --git a/src/thread.cpp b/src/thread.cpp index 10f432bd..2dcbf910 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -137,7 +137,6 @@ void Thread::main_loop() { void Thread::wake_up() { lock_grab(sleepLock); - do_sleep = false; cond_signal(sleepCond); lock_release(sleepLock); } @@ -257,6 +256,7 @@ void ThreadsManager::wake_up() const { for (int i = 0; i < size(); i++) { threads[i]->maxPly = 0; + threads[i]->do_sleep = false; if (!useSleepingThreads) threads[i]->wake_up(); @@ -419,6 +419,7 @@ void ThreadsManager::wait_for_search_finished() { Thread* main = threads[0]; lock_grab(main->sleepLock); + cond_signal(main->sleepCond); // In case is waiting for stop or ponderhit while (!main->do_sleep) cond_wait(sleepCond, main->sleepLock); lock_release(main->sleepLock); } @@ -431,6 +432,8 @@ void ThreadsManager::start_searching(const Position& pos, const LimitsType& limi const std::set& searchMoves) { wait_for_search_finished(); + SearchTime.restart(); // As early as possible + Signals.stopOnPonderhit = Signals.firstRootMove = false; Signals.stop = Signals.failedLowAtRoot = false; @@ -442,5 +445,6 @@ void ThreadsManager::start_searching(const Position& pos, const LimitsType& limi if (searchMoves.empty() || searchMoves.count(ml.move())) RootMoves.push_back(RootMove(ml.move())); + threads[0]->do_sleep = false; threads[0]->wake_up(); }