void Timer::start(const AbstractTimerCallback& method, Thread::Priority priority, ThreadPool& threadPool) { Clock nextInvocation; nextInvocation += static_cast<Clock::ClockVal>(_startInterval)*1000; FastMutex::ScopedLock lock(_mutex); if (_pCallback) { throw Poco::IllegalStateException("Timer already running"); } _nextInvocation = nextInvocation; _pCallback = method.clone(); _wakeUp.reset(); try { threadPool.startWithPriority(priority, *this); } catch (...) { delete _pCallback; _pCallback = 0; throw; } }
void Timer::start(const AbstractTimerCallback& method, Thread::Priority priority, ThreadPool& threadPool) { poco_assert (!_pCallback); FastMutex::ScopedLock lock(_mutex); _pCallback = method.clone(); _wakeUp.reset(); threadPool.startWithPriority(priority, *this); }
void Timer::start(const AbstractTimerCallback& method, Thread::Priority priority, ThreadPool& threadPool) { Clock nextInvocation; nextInvocation += static_cast<Clock::ClockVal>(_startInterval)*1000; poco_assert (!_pCallback); FastMutex::ScopedLock lock(_mutex); _nextInvocation = nextInvocation; _pCallback = method.clone(); _wakeUp.reset(); threadPool.startWithPriority(priority, *this); }