12 #ifndef INCLUDE_DISTORTOS_CONDITIONVARIABLE_HPP_ 13 #define INCLUDE_DISTORTOS_CONDITIONVARIABLE_HPP_ 114 int wait(Mutex& mutex);
135 template<
typename Predicate>
136 int wait(Mutex& mutex, Predicate predicate);
185 template<
typename Rep,
typename Period>
186 int waitFor(
Mutex& mutex,
const std::chrono::duration<Rep, Period> duration)
188 return waitFor(mutex, std::chrono::duration_cast<TickClock::duration>(duration));
217 template<
typename Rep,
typename Period,
typename Predicate>
218 int waitFor(
Mutex& mutex,
const std::chrono::duration<Rep, Period> duration, Predicate predicate)
269 template<
typename Duration>
270 int waitUntil(
Mutex& mutex,
const std::chrono::time_point<TickClock, Duration> timePoint)
272 return waitUntil(mutex, std::chrono::time_point_cast<TickClock::duration>(timePoint));
300 template<
typename Duration,
typename Predicate>
301 int waitUntil(
Mutex& mutex, std::chrono::time_point<TickClock, Duration> timePoint, Predicate predicate);
309 template<
typename Predicate>
314 while (predicate() ==
false)
316 const auto ret =
wait(mutex);
324 template<
typename Duration,
typename Predicate>
330 while (predicate() ==
false)
332 const auto ret =
waitUntil(mutex, timePoint);
342 #endif // INCLUDE_DISTORTOS_CONDITIONVARIABLE_HPP_ constexpr ConditionVariable()
ConditionVariable's constructor.
Definition: ConditionVariable.hpp:47
int waitFor(Mutex &mutex, const std::chrono::duration< Rep, Period > duration)
Waits for notification for given duration of time.
Definition: ConditionVariable.hpp:186
int waitUntil(Mutex &mutex, const std::chrono::time_point< TickClock, Duration > timePoint)
Waits for notification until given time point.
Definition: ConditionVariable.hpp:270
ConditionVariable is an advanced synchronization primitive.
Definition: ConditionVariable.hpp:35
int waitFor(Mutex &mutex, const std::chrono::duration< Rep, Period > duration, Predicate predicate)
Waits for predicate to become true for given duration of time.
Definition: ConditionVariable.hpp:218
int wait(Mutex &mutex)
Waits for notification.
Definition: ConditionVariable.cpp:45
void notifyOne()
Notifies one waiting thread.
Definition: ConditionVariable.cpp:37
void notifyAll()
Notifies all waiting threads.
Definition: ConditionVariable.cpp:29
std::chrono::time_point< TickClock > time_point
basic time_point type of clock
Definition: TickClock.hpp:42
CHECK_FUNCTION_CONTEXT() macro.
static time_point now()
Definition: TickClock.cpp:20
Top-level namespace of distortos project.
Definition: buttons.hpp:33
Mutex is the basic synchronization primitive.
Definition: Mutex.hpp:30
sorted intrusive list of threads (thread control blocks)
Definition: ThreadList.hpp:55
#define CHECK_FUNCTION_CONTEXT()
Macro used to check whether the function is executed from thread context.
Definition: CHECK_FUNCTION_CONTEXT.hpp:29
~ConditionVariable()=default
ConditionVariable's destructor.
std::chrono::duration< rep, period > duration
basic duration type of clock
Definition: TickClock.hpp:39
int waitUntil(Mutex &mutex, TickClock::time_point timePoint)
Waits for notification until given time point.
Definition: ConditionVariable.cpp:65
internal::ThreadList blockedList_
ThreadControlBlock objects blocked on this condition variable.
Definition: ConditionVariable.hpp:306
int waitFor(Mutex &mutex, TickClock::duration duration)
Waits for notification for given duration of time.
Definition: ConditionVariable.cpp:60