6 #include "simgrid/s4u/conditionVariable.hpp"
7 #include "simgrid/simix.h"
9 using namespace simgrid;
11 s4u::ConditionVariable::ConditionVariable() : cond_(simcall_cond_init()){
15 s4u::ConditionVariable::~ConditionVariable() {
16 SIMIX_cond_unref(cond_);
22 void s4u::ConditionVariable::wait(std::unique_lock<Mutex>& lock) {
23 simcall_cond_wait(cond_, lock.mutex()->mutex_);
26 std::cv_status s4u::ConditionVariable::wait_for(std::unique_lock<Mutex>& lock, double timeout) {
28 simcall_cond_wait_timeout(cond_, lock.mutex()->mutex_, timeout);
29 return std::cv_status::timeout;
32 if (e.category == timeout_error) {
33 // We have to take the lock:
40 return std::cv_status::timeout;
52 void s4u::ConditionVariable::notify() {
53 simcall_cond_signal(cond_);
56 void s4u::ConditionVariable::notify_all() {
57 simcall_cond_broadcast(cond_);