// Thread::timer_loop() is where the timer thread waits maxPly milliseconds and
// then calls do_timer_event(). If maxPly is 0 thread sleeps until is woken up.
-extern void do_timer_event();
+extern void check_time();
void Thread::timer_loop() {
lock_grab(&sleepLock);
timed_wait(&sleepCond, &sleepLock, maxPly ? maxPly : INT_MAX);
lock_release(&sleepLock);
- do_timer_event();
+ check_time();
}
}
// the search to finish.
void ThreadsManager::start_thinking(const Position& pos, const LimitsType& limits,
- const std::vector<Move>& searchMoves, bool asyncMode) {
+ const std::set<Move>& searchMoves, bool asyncMode) {
Thread& main = threads[0];
lock_grab(&main.sleepLock);
SearchMoves = searchMoves;
// Reset signals before to start the new search
- memset((void*)&Signals, 0, sizeof(Signals));
+ Signals.stopOnPonderhit = Signals.firstRootMove = false;
+ Signals.stop = Signals.failedLowAtRoot = false;
main.do_sleep = false;
cond_signal(&main.sleepCond); // Wake up main thread and start searching