#ifndef SIMGRID_S4U_COND_VARIABLE_HPP
#define SIMGRID_S4U_COND_VARIABLE_HPP
+#include <condition_variable>
+#include <mutex>
#include <utility> // std::swap
#include <simgrid/simix.h>
/**
* Wait functions
*/
- void wait(Mutex *mutex);
- void wait_for(Mutex *mutex, double time);
+ void wait(std::unique_lock<Mutex>& lock);
+ // TODO, return std::cv_status
+ std::cv_status wait_for(std::unique_lock<Mutex>& lock, double duration);
+ // TODO, wait_until
+
+ /** Variant which takes a predice */
+ template<class P>
+ void wait(std::unique_lock<Mutex>& lock, P pred)
+ {
+ while (!pred())
+ wait(lock);
+ }
+
+ // TODO, return std::cv_status
+ // TODO,wait_until
/**
* Notify functions