-
- // If this thread is the master of a split point and all slaves have
- // finished their work at this split point, return from the idle loop.
- if (sp && all_slaves_finished(sp))
- {
- // Because sp->is_slave[] is reset under lock protection,
- // be sure sp->lock has been released before to return.
- lock_grab(&(sp->lock));
- lock_release(&(sp->lock));
- return;
- }
- }
-}
-
-
-// do_uci_async_cmd() is called by listener thread when in async mode and 'cmd'
-// input line is received from the GUI.
-
-void do_uci_async_cmd(const std::string& cmd) {
-
- if (cmd == "quit")
- {
- // Quit the program as soon as possible
- Limits.ponder = false;
- QuitRequest = StopRequest = true;
- }
- else if (cmd == "stop")
- {
- // Stop calculating as soon as possible, but still send the "bestmove"
- // and possibly the "ponder" token when finishing the search.
- Limits.ponder = false;
- StopRequest = true;
- }
- else if (cmd == "ponderhit")
- {
- // The opponent has played the expected move. GUI sends "ponderhit" if
- // we were told to ponder on the same move the opponent has played. We
- // should continue searching but switching from pondering to normal search.
- Limits.ponder = false;
-
- if (StopOnPonderhit)
- StopRequest = true;