X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=8099787ec71980751e8fa826f641e058326e0609;hp=f6cf7090f1e2dfd681a8d3b2bac3540a62c55228;hb=d29a68f5854d0b529f2e0447fddcc6a61200c5aa;hpb=0608d6aaec6fe841550c9fc7142bba1b50d9ead6;ds=sidebyside diff --git a/src/search.cpp b/src/search.cpp index f6cf7090..8099787e 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1541,7 +1541,7 @@ void Thread::idle_loop() { void check_time() { static Time::point lastInfoTime = Time::now(); - int64_t nodes = 0; // Workaround silly 'uninitialized' gcc warning + Time::point elapsed = Time::now() - SearchTime; if (Time::now() - lastInfoTime >= 1000) { @@ -1549,14 +1549,24 @@ void check_time() { dbg_print(); } - if (Limits.ponder) - return; + if (Limits.use_time_management() && !Limits.ponder) + { + bool stillAtFirstMove = Signals.firstRootMove + && !Signals.failedLowAtRoot + && elapsed > TimeMgr.available_time() * 75 / 100; + + if ( stillAtFirstMove + || elapsed > TimeMgr.maximum_time() - 2 * TimerThread::Resolution) + Signals.stop = true; + } + else if (Limits.movetime && elapsed >= Limits.movetime) + Signals.stop = true; - if (Limits.nodes) + else if (Limits.nodes) { Threads.mutex.lock(); - nodes = RootPos.nodes_searched(); + int nodes = RootPos.nodes_searched(); // Loop across all split points and sum accumulated SplitPoint nodes plus // all the currently active positions nodes. @@ -1577,18 +1587,8 @@ void check_time() { } Threads.mutex.unlock(); - } - Time::point elapsed = Time::now() - SearchTime; - bool stillAtFirstMove = Signals.firstRootMove - && !Signals.failedLowAtRoot - && elapsed > TimeMgr.available_time() * 75 / 100; - - bool noMoreTime = elapsed > TimeMgr.maximum_time() - 2 * TimerThread::Resolution - || stillAtFirstMove; - - if ( (Limits.use_time_management() && noMoreTime) - || (Limits.movetime && elapsed >= Limits.movetime) - || (Limits.nodes && nodes >= Limits.nodes)) - Signals.stop = true; + if (nodes >= Limits.nodes) + Signals.stop = true; + } }