6#ifdef ROO_THREADS_SINGLETHREADED
12namespace singlethreaded {
21class condition_variable {
24 condition_variable() noexcept {}
26 condition_variable(
const condition_variable&) =
delete;
27 condition_variable& operator=(
const condition_variable&) =
delete;
33 void wait(unique_lock<mutex>& lock)
noexcept;
39 template <
class Predicate>
40 void wait(unique_lock<mutex>& lock, Predicate pred);
43 void notify_one() noexcept {}
46 void notify_all() noexcept {}
49 cv_status wait_until(unique_lock<mutex>& lock,
const roo_time::Uptime& when) {
50 return wait_for(lock, when - roo_time::Uptime::Now());
54 template <
typename Predicate>
55 bool wait_until(unique_lock<mutex>& lock,
const roo_time::Uptime& when,
58 if (wait_until(lock, when) == cv_status::timeout)
return p();
63 cv_status wait_for(unique_lock<mutex>& lock,
64 const roo_time::Duration& duration) {
65 roo_time::Delay(duration);
66 return cv_status::timeout;
70 template <
typename Predicate>
71 bool wait_for(unique_lock<mutex>& lock,
const roo_time::Duration& duration,
73 return wait_until(lock, roo_time::Uptime::Now() + duration, p);
cv_status
Status returned from timed wait operations.