X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/139809a443fa07be320d34884d9716c7baaada97..851011012031214525df480e2c5abddb490228fe:/include/simgrid/s4u/conditionVariable.hpp diff --git a/include/simgrid/s4u/conditionVariable.hpp b/include/simgrid/s4u/conditionVariable.hpp index f2790166a2..ce06ef00ca 100644 --- a/include/simgrid/s4u/conditionVariable.hpp +++ b/include/simgrid/s4u/conditionVariable.hpp @@ -6,6 +6,7 @@ #ifndef SIMGRID_S4U_COND_VARIABLE_HPP #define SIMGRID_S4U_COND_VARIABLE_HPP +#include #include // std::swap #include @@ -49,8 +50,26 @@ public: /** * Wait functions */ - void wait(Mutex *mutex); - void wait_for(Mutex *mutex, double time); + void wait(std::unique_lock& lock); + // TODO, return std::cv_status + void wait_for(std::unique_lock& lock, double duration); + // TODO, wait_until + + /** Variant which takes a predice */ + template + void wait(std::unique_lock& lock, P pred) + { + while (!pred()) + wait(lock); + } + // TODO, return std::cv_status + template + void wait_for(std::unique_lock& lock, double duration, P pred) + { + while (!pred()) + wait_for(lock, duration); + } + // TODO,wait_until /** * Notify functions