+ ConditionVariable(ConditionVariable const&) = delete;
+ ConditionVariable& operator=(ConditionVariable const&) = delete;
+
+ friend XBT_PUBLIC(void) intrusive_ptr_add_ref(ConditionVariable* cond);
+ friend XBT_PUBLIC(void) intrusive_ptr_release(ConditionVariable* cond);
+ using Ptr = boost::intrusive_ptr<ConditionVariable>;
+
+ static Ptr createConditionVariable();
+
+ // Wait functions:
+
+ void wait(std::unique_lock<Mutex>& lock);
+ std::cv_status wait_until(std::unique_lock<Mutex>& lock, double timeout_time);
+ std::cv_status wait_for(std::unique_lock<Mutex>& lock, double duration);
+
+ // Variants which takes a predicate: