X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fthread.cpp;h=1db61a20671e77376de2c7501175f2699f02b1c3;hp=74ca48cc7e81ea175f734f31b9fb26828320067b;hb=103b368ab7f5fd696e0c6925917344d15a3c2d9c;hpb=a29dd88f7563c5af871d9adc137218c39586b09c diff --git a/src/thread.cpp b/src/thread.cpp index 74ca48cc..1db61a20 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -19,6 +19,7 @@ #include +#include "movegen.h" #include "search.h" #include "thread.h" #include "ucioption.h" @@ -420,7 +421,7 @@ void Thread::main_loop() { if (do_terminate) return; - think(); // This is the search entry point + Search::think(); } } @@ -431,7 +432,7 @@ void Thread::main_loop() { // the search to finish. void ThreadsManager::start_thinking(const Position& pos, const LimitsType& limits, - const std::set& searchMoves, bool asyncMode) { + const std::set& searchMoves, bool async) { Thread& main = threads[0]; lock_grab(&main.sleepLock); @@ -443,7 +444,13 @@ void ThreadsManager::start_thinking(const Position& pos, const LimitsType& limit // Copy input arguments to initialize the search RootPosition.copy(pos, 0); Limits = limits; - SearchMoves = searchMoves; + RootMoves.clear(); + + // Populate RootMoves with all the legal moves (default) or, if a searchMoves + // set is given, with the subset of legal moves to search. + for (MoveList ml(pos); !ml.end(); ++ml) + if (searchMoves.empty() || searchMoves.count(ml.move())) + RootMoves.push_back(RootMove(ml.move())); // Reset signals before to start the new search Signals.stopOnPonderhit = Signals.firstRootMove = false; @@ -452,7 +459,7 @@ void ThreadsManager::start_thinking(const Position& pos, const LimitsType& limit main.do_sleep = false; cond_signal(&main.sleepCond); // Wake up main thread and start searching - if (!asyncMode) + if (!async) while (!main.do_sleep) cond_wait(&sleepCond, &main.sleepLock);