Retire the "sync" behaviour that now is up to
the caller to honour.
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
else
{
Threads.start_searching(pos, limits);
else
{
Threads.start_searching(pos, limits);
+ Threads.wait_for_search_finished();
nodes += Search::RootPosition.nodes_searched();
}
}
nodes += Search::RootPosition.nodes_searched();
}
}
-// ThreadsManager::start_searching() is used by UI thread to wake up the main
-// thread parked in main_loop() and starting a new search. If async is true
-// then function returns immediately, otherwise caller is blocked waiting for
-// the search to finish.
+// ThreadsManager::start_searching() wakes up the main thread sleeping in
+// main_loop() so to start a new search, then returns immediately.
void ThreadsManager::start_searching(const Position& pos, const LimitsType& limits,
void ThreadsManager::start_searching(const Position& pos, const LimitsType& limits,
- const std::set<Move>& searchMoves, bool async) {
+ const std::set<Move>& searchMoves) {
wait_for_search_finished();
Signals.stopOnPonderhit = Signals.firstRootMove = false;
wait_for_search_finished();
Signals.stopOnPonderhit = Signals.firstRootMove = false;
if (searchMoves.empty() || searchMoves.count(ml.move()))
RootMoves.push_back(RootMove(ml.move()));
if (searchMoves.empty() || searchMoves.count(ml.move()))
RootMoves.push_back(RootMove(ml.move()));
- threads[0]->wake_up(); // Start main thread
-
- if (!async)
- wait_for_search_finished();
void set_timer(int msec);
void wait_for_search_finished();
void start_searching(const Position& pos, const Search::LimitsType& limits,
void set_timer(int msec);
void wait_for_search_finished();
void start_searching(const Position& pos, const Search::LimitsType& limits,
- const std::set<Move>& = std::set<Move>(), bool async = false);
+ const std::set<Move>& = std::set<Move>());
template <bool Fake>
Value split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value bestValue, Move* bestMove,
template <bool Fake>
Value split(Position& pos, Search::Stack* ss, Value alpha, Value beta, Value bestValue, Move* bestMove,
limits.time = time[pos.side_to_move()];
limits.increment = inc[pos.side_to_move()];
limits.time = time[pos.side_to_move()];
limits.increment = inc[pos.side_to_move()];
- Threads.start_searching(pos, limits, searchMoves, true);
+ Threads.start_searching(pos, limits, searchMoves);