Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use Mutex::create() for sg_mutex_init().
[simgrid.git] / src / s4u / s4u_Mutex.cpp
index e855283..3881cf2 100644 (file)
 namespace simgrid {
 namespace s4u {
 
-Mutex::~Mutex()
-{
-  if (pimpl_ != nullptr)
-    pimpl_->unref();
-}
-
 /** @brief Blocks the calling actor until the mutex can be obtained */
 void Mutex::lock()
 {
@@ -76,10 +70,7 @@ void intrusive_ptr_release(const Mutex* mutex)
 /* **************************** Public C interface *************************** */
 sg_mutex_t sg_mutex_init()
 {
-  simgrid::kernel::activity::MutexImpl* mutex =
-      simgrid::kernel::actor::simcall([] { return new simgrid::kernel::activity::MutexImpl(); });
-
-  return new simgrid::s4u::Mutex(mutex);
+  return simgrid::s4u::Mutex::create().detach();
 }
 
 void sg_mutex_lock(sg_mutex_t mutex)
@@ -99,5 +90,5 @@ int sg_mutex_try_lock(sg_mutex_t mutex)
 
 void sg_mutex_destroy(const_sg_mutex_t mutex)
 {
-  delete mutex;
+  intrusive_ptr_release(mutex);
 }