X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FScheduler.cc;h=5285fa7da8b2e77fd443843830e7b23d8619b80a;hb=3d16600678b948ff3bd0e4fd2a1a800fcc629a03;hp=177a874f837e13654a7420d8970e3ef4b7c8b811;hpb=77a726fdfa20680c691ba528fdad979422ef829c;p=senf.git diff --git a/Scheduler/Scheduler.cc b/Scheduler/Scheduler.cc index 177a874..5285fa7 100644 --- a/Scheduler/Scheduler.cc +++ b/Scheduler/Scheduler.cc @@ -86,7 +86,8 @@ static const int EPollInitialSize = 16; ///////////////////////////////cc.p//////////////////////////////////////// prefix_ senf::Scheduler::Scheduler() - : timerIdCounter_(0), epollFd_ (epoll_create(EPollInitialSize)), terminate_(false) + : timerIdCounter_(0), epollFd_ (epoll_create(EPollInitialSize)), terminate_(false), + eventTime_(0) { if (epollFd_<0) throw SystemException(errno); @@ -153,10 +154,9 @@ prefix_ int senf::Scheduler::EventSpec::epollMask() prefix_ void senf::Scheduler::process() { terminate_ = false; + eventTime_ = ClockService::now(); while (! terminate_) { - ClockService::clock_type timeNow = ClockService::now(); - - while ( ! timerQueue_.empty() && timerQueue_.top()->second.timeout <= timeNow ) { + while ( ! timerQueue_.empty() && timerQueue_.top()->second.timeout <= eventTime_ ) { TimerMap::iterator i (timerQueue_.top()); if (! i->second.canceled) i->second.cb(); @@ -170,7 +170,7 @@ prefix_ void senf::Scheduler::process() int timeout (MinTimeout); if (! timerQueue_.empty()) { ClockService::clock_type delta ( - (timerQueue_.top()->second.timeout - timeNow)/1000000UL); + (timerQueue_.top()->second.timeout - eventTime_)/1000000UL); if (delta