Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[s4u] Use unique_ptr in ConditionVariable (like the std:: ones)
[simgrid.git] / src / s4u / s4u_conditionVariable.cpp
1 #include <mutex>
2
3 #include "simgrid/s4u/conditionVariable.hpp"
4 #include "simgrid/simix.h"
5
6 using namespace simgrid;
7
8 s4u::ConditionVariable::ConditionVariable()  : cond_(simcall_cond_init()){
9     
10 }
11
12 s4u::ConditionVariable::~ConditionVariable() {
13   SIMIX_cond_unref(cond_);
14 }
15
16 /**
17  * Wait functions
18  */
19 void s4u::ConditionVariable::wait(std::unique_lock<Mutex>& lock) {
20   simcall_cond_wait(cond_, lock.mutex()->mutex_);
21 }
22   
23 void s4u::ConditionVariable::wait_for(std::unique_lock<Mutex>& lock, double timeout) {
24   simcall_cond_wait_timeout(cond_, lock.mutex()->mutex_, timeout);
25 }
26   
27 /**
28  * Notify functions
29  */
30 void s4u::ConditionVariable::notify() { 
31    simcall_cond_signal(cond_);
32 }
33  
34 void s4u::ConditionVariable::notify_all() {
35   simcall_cond_broadcast(cond_);
36 }
37
38