- masterThread.idle_loop(sp);
-
- // In helpful master concept a master can help only a sub-tree of its split
- // point, and because here is all finished is not possible master is booked.
- assert(!masterThread.is_searching);
-
- // We have returned from the idle loop, which means that all threads are
- // finished. Note that changing state and decreasing activeSplitPoints is done
- // under lock protection to avoid a race with Thread::is_available_to().
- lock_grab(threadsLock);
-
- masterThread.is_searching = true;
- masterThread.activeSplitPoints--;
-
- lock_release(threadsLock);
-
- masterThread.splitPoint = sp->parent;
- pos.set_nodes_searched(pos.nodes_searched() + sp->nodes);
-
- return sp->bestValue;
-}
-
-// Explicit template instantiations
-template Value ThreadsManager::split<false>(Position&, Stack*, Value, Value, Value, Depth, Move, int, MovePicker*, int);
-template Value ThreadsManager::split<true>(Position&, Stack*, Value, Value, Value, Depth, Move, int, MovePicker*, int);
-
-
-// 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 check_time();
-
-void Thread::timer_loop() {
-
- while (!do_terminate)