12#include <condition_variable>
51 std::unique_lock<std::mutex> lock(
mutex._mutex, std::adopt_lock);
57 std::cv_status status = _cv.wait_for(lock,
60 return status == std::cv_status::no_timeout
79 typename = std::enable_if_t<std::is_invocable_r_v<bool, Predicate>>>
81 std::unique_lock<std::mutex> lock(
mutex._mutex, std::adopt_lock);
87 bool result = _cv.wait_for(lock,
104 std::condition_variable _cv;
Lightweight error code wrapper for the promeki library.
Definition error.h:39
@ Timeout
Operation timed out.
Definition error.h:78
@ Ok
No error.
Definition error.h:51
Dynamic array container wrapping std::vector.
Definition list.h:40
Mutual exclusion lock wrapping std::mutex.
Definition mutex.h:33
Condition variable wrapping std::condition_variable.
Definition waitcondition.h:26
Error wait(Mutex &mutex, Predicate pred, unsigned int timeoutMs=0)
Waits until a predicate becomes true or the timeout expires.
Definition waitcondition.h:80
void wakeAll()
Wakes all waiting threads.
Definition waitcondition.h:99
Error wait(Mutex &mutex, unsigned int timeoutMs=0)
Waits until woken or the timeout expires.
Definition waitcondition.h:50
~WaitCondition()=default
Destructor.
WaitCondition()=default
Constructs a WaitCondition.
void wakeOne()
Wakes one waiting thread.
Definition waitcondition.h:94
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19