Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Some #include fixes
[simgrid.git] / include / simgrid / s4u / mutex.hpp
index da7c3df..bf4e00d 100644 (file)
@@ -6,28 +6,30 @@
 #ifndef SIMGRID_S4U_MUTEX_HPP
 #define SIMGRID_S4U_MUTEX_HPP
 
+#include <mutex>
 #include <utility>
 
-#include <boost/intrusive_ptr.hpp>
 #include <xbt/base.h>
 #include "simgrid/simix.h"
 
 namespace simgrid {
 namespace s4u {
 
-XBT_PUBLIC_CLASS Mutex {
+class ConditionVariable;
 
+XBT_PUBLIC_CLASS Mutex {
+friend ConditionVariable;
 public:
   Mutex() :
     mutex_(simcall_mutex_init()) {}
-  Mutex(simgrid::simix::Mutex* mutex) : mutex_(SIMIX_mutex_dup(mutex)) {}
+  Mutex(simgrid::simix::Mutex* mutex) : mutex_(SIMIX_mutex_ref(mutex)) {}
   ~Mutex()
   {
-    SIMIX_mutex_destroy(mutex_);
+    SIMIX_mutex_unref(mutex_);
   }
 
   // Copy+move (with the copy-and-swap idiom):
-  Mutex(Mutex const& mutex) : mutex_(SIMIX_mutex_dup(mutex.mutex_)) {}
+  Mutex(Mutex const& mutex) : mutex_(SIMIX_mutex_ref(mutex.mutex_)) {}
   friend void swap(Mutex& first, Mutex& second)
   {
     using std::swap;
@@ -56,6 +58,7 @@ public:
 private:
   simgrid::simix::Mutex* mutex_;
 };
+
 }} // namespace simgrid::s4u
 
 #endif /* SIMGRID_S4U_MUTEX_HPP */