/////////////////////////////////////////////////////////////////////// /// Function: Acquire /// /// Author: $author$ /// Date: 3/27/2012 /////////////////////////////////////////////////////////////////////// virtual XosError Acquire (mseconds_t waitMilliseconds) { XosError error = XOS_ERROR_FAILED; if ((m_isCreated)) if (0 < (waitMilliseconds)) { int err; struct timespec untilTime; if (!(err = clock_gettime(CLOCK_REALTIME, &untilTime))) { untilTime.tv_sec += waitMilliseconds/1000; untilTime.tv_nsec += (waitMilliseconds%1000)*1000; error = TimedWait(untilTime); } else { XOS_DBE(("() failed on clock_gettime()\n")); } } else if (0 > (waitMilliseconds)) error = TryWait(); else error = Wait(); return error; }
bool CooperativeWaitable::TimedWait(unsigned int timeout, const char* fiber_state, void (*func)(void*), void* arg) { runtime_env::ABSTime time; time.Adjust(0, timeout * 1000); return TimedWait(time, fiber_state, func, arg); }
bool WaitableEvent::IsSignaled(){ return TimedWait(0); }
void LLBC_ConditionVariable::Wait(LLBC_ILock &lock) { TimedWait(lock, LLBC_INFINITE); }
void ConditionVariable::Wait() { // Default to "wait forever" timing, which means have to get a Signal() // or Broadcast() to come out of this wait state. TimedWait(TimeDelta::FromMilliseconds(INFINITE)); }
bool Condition::TimedWait(unsigned int timeout) { runtime_env::ABSTime time; time.Adjust(0, timeout * 1000); return TimedWait(time); }
bool Semaphore::Wait() { return TimedWait(INFINITE); }
bool WaitableEvent::IsSignaled() { return TimedWait(TimeDelta::FromMilliseconds(0)); }