}
search(true); // Let's start searching!
-
- // Stop the threads
- Signals.stop = true;
-
- // Wait until all threads have finished
- for (Thread* th : Threads)
- if (th != this)
- th->wait_while(th->searching);
}
// When playing in 'nodes as time' mode, subtract the searched nodes from
wait(Signals.stop);
}
+ // Stop the threads if not already stopped
+ Signals.stop = true;
+
+ // Wait until all threads have finished
+ for (Thread* th : Threads)
+ if (th != this)
+ th->wait_while(th->searching);
+
// Check if there are threads with a better score than main thread.
Thread* bestThread = this;
for (Thread* th : Threads)
{
// Set up the new depth for the helper threads
if (!isMainThread)
- rootDepth = Threads.main()->rootDepth + Depth(int(2.2 * log(1 + this->idx)));
+ rootDepth = std::min(DEPTH_MAX - ONE_PLY, Threads.main()->rootDepth + Depth(int(2.2 * log(1 + this->idx))));
// Age out PV variability metric
if (isMainThread)
assert(-VALUE_INFINITE <= alpha && alpha < beta && beta <= VALUE_INFINITE);
assert(PvNode || (alpha == beta - 1));
- assert(depth > DEPTH_ZERO);
+ assert(DEPTH_ZERO < depth && depth < DEPTH_MAX);
Move pv[MAX_PLY+1], quietsSearched[64];
StateInfo st;