curSplitPoint = NULL;
start_fn = fn;
idx = Threads.size();
-
- do_sleep = (fn != &Thread::main_loop); // Avoid a race with start_searching()
+ do_sleep = true;
if (!thread_create(handle, start_routine, this))
{
while (!do_exit)
{
mutex.lock();
- sleepCondition.wait_for(mutex, maxPly ? maxPly : INT_MAX);
+ while (!maxPly && !do_exit)
+ sleepCondition.wait_for(mutex, maxPly ? maxPly : INT_MAX);
mutex.unlock();
check_time();
}
}
-// set_timer() is used to set the timer to trigger after msec milliseconds.
-// If msec is 0 then timer is stopped.
-
-void ThreadPool::set_timer(int msec) {
-
- timer->maxPly = msec;
- timer->notify_one(); // Wake up and restart the timer
-}
-
-
// split() does the actual work of distributing the work at a node between
// several available threads. If it does not succeed in splitting the node
// (because no idle threads are available, or because we have no unused split