X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/84402e8e2ee2a2d0bef25fdceb0a263ed8b471f6..b5e12b5385e12f089e86f207422e19d2faea235a:/src/kernel/activity/ConditionVariableImpl.hpp diff --git a/src/kernel/activity/ConditionVariableImpl.hpp b/src/kernel/activity/ConditionVariableImpl.hpp index 8ad7766894..eb6937b339 100644 --- a/src/kernel/activity/ConditionVariableImpl.hpp +++ b/src/kernel/activity/ConditionVariableImpl.hpp @@ -15,22 +15,23 @@ namespace kernel { namespace activity { class XBT_PUBLIC ConditionVariableImpl { -public: - ConditionVariableImpl(); - ~ConditionVariableImpl(); - - actor::SynchroList sleeping_; /* list of sleeping processes */ MutexImpl* mutex_ = nullptr; - s4u::ConditionVariable cond_; - - void broadcast(); - void signal(); - void wait(MutexImpl* mutex, double timeout, actor::ActorImpl* issuer); + s4u::ConditionVariable piface_; + actor::SynchroList sleeping_; /* list of sleeping actors*/ -private: std::atomic_int_fast32_t refcount_{1}; friend void intrusive_ptr_add_ref(ConditionVariableImpl* cond); friend void intrusive_ptr_release(ConditionVariableImpl* cond); + +public: + ConditionVariableImpl() : piface_(this){}; + ~ConditionVariableImpl() = default; + + void remove_sleeping_actor(actor::ActorImpl& actor) { xbt::intrusive_erase(sleeping_, actor); } + s4u::ConditionVariable* get_iface() { return &piface_; } + void broadcast(); + void signal(); + void wait(MutexImpl* mutex, double timeout, actor::ActorImpl* issuer); }; } // namespace activity } // namespace kernel