libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
WaitCondition Class Reference

Condition variable wrapping std::condition_variable. More...

#include <waitcondition.h>

Public Member Functions

 WaitCondition ()=default
 Constructs a WaitCondition.
 
 ~WaitCondition ()=default
 Destructor.
 
 WaitCondition (const WaitCondition &)=delete
 
WaitConditionoperator= (const WaitCondition &)=delete
 
 WaitCondition (WaitCondition &&)=delete
 
WaitConditionoperator= (WaitCondition &&)=delete
 
Error wait (Mutex &mutex, unsigned int timeoutMs=0)
 Waits until woken or the timeout expires.
 
template<typename Predicate , typename = std::enable_if_t<std::is_invocable_r_v<bool, Predicate>>>
Error wait (Mutex &mutex, Predicate pred, unsigned int timeoutMs=0)
 Waits until a predicate becomes true or the timeout expires.
 
void wakeOne ()
 Wakes one waiting thread.
 
void wakeAll ()
 Wakes all waiting threads.
 

Detailed Description

Condition variable wrapping std::condition_variable.

Used with Mutex to allow threads to wait for a condition to become true. Non-copyable and non-movable.

Member Function Documentation

◆ wait() [1/2]

template<typename Predicate , typename = std::enable_if_t<std::is_invocable_r_v<bool, Predicate>>>
Error WaitCondition::wait ( Mutex mutex,
Predicate  pred,
unsigned int  timeoutMs = 0 
)
inline

Waits until a predicate becomes true or the timeout expires.

The caller must hold mutex locked. The mutex is atomically released while waiting and re-acquired before returning.

Template Parameters
PredicateA callable returning bool.
Parameters
mutexThe mutex to wait on.
predThe predicate to check.
timeoutMsMaximum time to wait in milliseconds. A value of 0 (the default) waits indefinitely.
Returns
Error::Ok if the predicate became true, Error::Timeout if the timeout elapsed.

◆ wait() [2/2]

Error WaitCondition::wait ( Mutex mutex,
unsigned int  timeoutMs = 0 
)
inline

Waits until woken or the timeout expires.

The caller must hold mutex locked. The mutex is atomically released while waiting and re-acquired before returning.

Parameters
mutexThe mutex to wait on.
timeoutMsMaximum time to wait in milliseconds. A value of 0 (the default) waits indefinitely.
Returns
Error::Ok if woken, Error::Timeout if the timeout elapsed.

The documentation for this class was generated from the following file: