示例#1
0
    ///////////////////////////////////////////////////////////////////////
    ///  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;
    }
示例#2
0
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);
}
示例#3
0
bool WaitableEvent::IsSignaled(){
    return TimedWait(0);
}
示例#4
0
void LLBC_ConditionVariable::Wait(LLBC_ILock &lock)
{
    TimedWait(lock, LLBC_INFINITE);
}
示例#5
0
 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));
 }
示例#6
0
bool Condition::TimedWait(unsigned int timeout)
{
    runtime_env::ABSTime time;
    time.Adjust(0, timeout * 1000);
    return TimedWait(time);
}
示例#7
0
bool Semaphore::Wait()
{
    return TimedWait(INFINITE);
}
示例#8
0
 bool WaitableEvent::IsSignaled()
 {
     return TimedWait(TimeDelta::FromMilliseconds(0));
 }