|
noexcept |
Atomically unlocks the specified mutex and endeavours to block until the specified condition variable is signalled by a call to chsv_cnd_signal or to chsv_cnd_broadcast, or until the specified time elapses.
[in] | pCnd | is a pointer to a descriptor of the condition variable object to be waited for. |
[in] | pMtx | is a pointer to a mutex object to be atomically signalled before the waiting for the condition variable. When the condition variable is signalled so that the calling thread becomes unlocked, the thread atomically endeavours to lock the mutex with blocking. The mutex has to be owned by the calling thread before the call. Otherwise the function will abort execution of the whole program by calling the abort function. |
[in] | cMilliseconds | is a whole number of milliseconds for the function to wait for the condition variable to be signalled. |
This is an extension to the chsv_cnd_timedwait function which implements waiting for an absolute time specified as chsv_xtime object as specified by the C11 standard. The chsv_cnd_timedwaitfor function uses a relative time passed since the moment of a call.
On POSIX systems (see the IEEE Str 1003.1 standard) the implementation sometimes spurious wakeups of threads, blocked while waiting for the condition variable, may occur. The function does not handle these wakeups and it is up to the caller to verify them.