+ cond_signal(main.sleepCond); // Wake up main thread and start searching
+
+ if (!async)
+ while (!main.do_sleep)
+ cond_wait(sleepCond, main.sleepLock);
+
+ lock_release(main.sleepLock);
+}
+
+
+// ThreadsManager::stop_thinking() is used by UI thread to raise a stop request
+// and to wait for the main thread finishing the search. Needed to wait exiting
+// and terminate the threads after a 'quit' command.
+
+void ThreadsManager::stop_thinking() {
+
+ Thread& main = threads[0];
+
+ Search::Signals.stop = true;
+
+ lock_grab(main.sleepLock);