X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/340307c06ecc6e3e02f73820da97f0c6479c62c5..851011012031214525df480e2c5abddb490228fe:/include/simgrid/s4u/conditionVariable.hpp diff --git a/include/simgrid/s4u/conditionVariable.hpp b/include/simgrid/s4u/conditionVariable.hpp index ec9823d4ca..ce06ef00ca 100644 --- a/include/simgrid/s4u/conditionVariable.hpp +++ b/include/simgrid/s4u/conditionVariable.hpp @@ -6,8 +6,11 @@ #ifndef SIMGRID_S4U_COND_VARIABLE_HPP #define SIMGRID_S4U_COND_VARIABLE_HPP -#include +#include +#include // std::swap +#include +#include namespace simgrid { namespace s4u { @@ -47,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