diff --git a/src/threading/Manager.cc b/src/threading/Manager.cc index 9e0616f0d2..1b6cb551e2 100644 --- a/src/threading/Manager.cc +++ b/src/threading/Manager.cc @@ -82,17 +82,7 @@ double Manager::NextTimestamp(double* network_time) { MsgThread* t = *i; - // We check here if there's something ready to read from the - // queue. Normally the queue will tell us that reliably via - // MightHaveOut() because we keep sending heartbeats that - // will ensure that the method will eventually return true. - // However, when running without network source and without - // any communication, the timer_manager's time will always - // remain at 1.0, which means that heartbeats will never be - // triggered. In that case, we make sure to still process our - // threads from time to time. - if ( ((*i)->MightHaveOut() && ! t->Killed()) - || (timer_mgr->Time() == 1.0 && random() % 10000 == 0) ) + if ( (*i)->MightHaveOut() && ! t->Killed() ) return timer_mgr->Time(); } diff --git a/src/threading/Queue.h b/src/threading/Queue.h index b2b3fdaa03..6d21bfd998 100644 --- a/src/threading/Queue.h +++ b/src/threading/Queue.h @@ -69,7 +69,7 @@ public: * it is empty. In other words, this method helps to avoid locking the queue * frequently, but doesn't allow you to forgo it completely. */ - bool MaybeReady() { return (read_ptr != write_ptr); } + bool MaybeReady() { return (num_reads != num_writes); } /** Wake up the reader if it's currently blocked for input. This is primarily to give it a chance to check termination quickly.