void Run() { NPT_Thread::SetCurrentThreadPriority(m_Prio); NPT_TimeStamp now; NPT_TimeStamp then; NPT_System::GetCurrentTimeStamp(now); do { for (unsigned int i=0; i<10000; i++) { m_Counter++; } for (unsigned int i=0; i<10000; i++) { m_Counter--; } m_Counter++; NPT_System::GetCurrentTimeStamp(then); } while (then.ToMillis()-now.ToMillis() < 30000); }
void FrontEnd::broadcastIfNecessary() { ReadLocker locker1(m_stateLock); if (m_state != State_Running) { return; } NPT_TimeStamp ts; NPT_System::GetCurrentTimeStamp(ts); NPT_Int64 tsMillis = ts.ToMillis(); WriteLocker locker2(m_dsLock); for (NPT_Ordinal i = 0; i < m_deviceImplList.GetItemCount(); i++) { NPT_List<DeviceImplInfo*>::Iterator it = m_deviceImplList.GetItem(i); DeviceImplInfo *info = *it; //if (info->m_updateTS.ToMillis() + info->m_deviceImpl->m_expireSeconds * 1000 - 11000 < tsMillis) if (tsMillis - info->m_updateTS.ToMillis() > 30000) { broadcastLocked(info, true); } } }