16 #ifndef BLOOMBERG_QUANTUM_CONDITION_VARIABLE_H 17 #define BLOOMBERG_QUANTUM_CONDITION_VARIABLE_H 21 #include <quantum/quantum_mutex.h> 22 #include <quantum/quantum_yielding_thread.h> 23 #include <quantum/interface/quantum_icontext.h> 24 #include <quantum/quantum_traits.h> 94 template <
class PREDICATE =
bool()>
114 template <
class PREDICATE =
bool()>
117 PREDICATE predicate);
128 template <
class REP,
class PERIOD>
130 const std::chrono::duration<REP, PERIOD>& time);
142 template <
class REP,
class PERIOD>
145 const std::chrono::duration<REP, PERIOD>& time);
166 template <
class REP,
class PERIOD,
class PREDICATE =
bool()>
168 const std::chrono::duration<REP, PERIOD>& time,
169 PREDICATE predicate);
191 template <
class REP,
class PERIOD,
class PREDICATE =
bool()>
194 const std::chrono::duration<REP, PERIOD>& time,
195 PREDICATE predicate);
198 template <
class YIELDING>
199 void waitImpl(YIELDING&& yield,
201 std::atomic_int& signal);
203 template <
class YIELDING,
class PREDICATE =
bool()>
204 void waitImpl(YIELDING&& yield,
207 std::atomic_int& signal);
209 template <
class YIELDING,
class REP,
class PERIOD>
210 bool waitForImpl(YIELDING&& yield,
212 std::chrono::duration<REP, PERIOD>& time,
213 std::atomic_int& signal);
215 template <
class YIELDING,
class REP,
class PERIOD,
class PREDICATE =
bool()>
216 bool waitForImpl(YIELDING&& yield,
218 const std::chrono::duration<REP, PERIOD>& time,
220 std::atomic_int& signal);
224 std::list<std::atomic_int*> _waiters;
225 std::atomic_bool _destroyed;
230 #include <quantum/impl/quantum_condition_variable_impl.h> 232 #endif //BLOOMBERG_QUANTUM_CONDITION_VARIABLE_H void notifyOne()
Notify one waiting thread or coroutine.
Definition: quantum_condition_variable_impl.h:40
Definition: quantum_buffer_impl.h:22
void notifyAll()
Notify all waiting threads and coroutines.
Definition: quantum_condition_variable_impl.h:53
std::shared_ptr< ICoroSync > Ptr
Definition: quantum_icoro_sync.h:36
~ConditionVariable()
Destructor.
Definition: quantum_condition_variable_impl.h:33
This class represents a coroutine-compatible implementation of the std::condition_variable....
Definition: quantum_condition_variable.h:36
ConditionVariable()
Default constructor.
Definition: quantum_condition_variable_impl.h:28
bool waitFor(Mutex &mutex, const std::chrono::duration< REP, PERIOD > &time)
Block the current thread until the condition is signalled via notifyOne() or notifyAll() or until 'ti...
Definition: quantum_condition_variable_impl.h:92
ConditionVariable & operator=(const ConditionVariable &other)=delete
void wait(Mutex &mutex)
Block the current thread until the condition is signalled via notifyOne() or notifyAll().
Definition: quantum_condition_variable_impl.h:65