Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use ConditionVariable::create() for sg_cond_init().
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sat, 13 Mar 2021 21:25:04 +0000 (22:25 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sat, 13 Mar 2021 21:25:04 +0000 (22:25 +0100)
include/simgrid/s4u/ConditionVariable.hpp
src/s4u/s4u_ConditionVariable.cpp

index 934780b..e18b846 100644 (file)
@@ -28,7 +28,6 @@ private:
   friend kernel::activity::ConditionVariableImpl;
   kernel::activity::ConditionVariableImpl* const pimpl_;
 
-public:
 #ifndef DOXYGEN
   explicit ConditionVariable(kernel::activity::ConditionVariableImpl* cond) : pimpl_(cond) {}
 
@@ -39,6 +38,7 @@ public:
   friend XBT_PUBLIC void intrusive_ptr_release(const ConditionVariable* cond);
 #endif
 
+public:
   /** Create a new condition variable and return a smart pointer
    *
    * @beginrst
index b8f0437..102d683 100644 (file)
@@ -91,10 +91,7 @@ void intrusive_ptr_release(const ConditionVariable* cond)
 /* **************************** Public C interface *************************** */
 sg_cond_t sg_cond_init()
 {
-  simgrid::kernel::activity::ConditionVariableImpl* cond =
-      simgrid::kernel::actor::simcall([] { return new simgrid::kernel::activity::ConditionVariableImpl(); });
-
-  return new simgrid::s4u::ConditionVariable(cond);
+  return simgrid::s4u::ConditionVariable::create().detach();
 }
 
 void sg_cond_wait(sg_cond_t cond, sg_mutex_t mutex)
@@ -120,5 +117,5 @@ void sg_cond_notify_all(sg_cond_t cond)
 
 void sg_cond_destroy(const_sg_cond_t cond)
 {
-  delete cond;
+  intrusive_ptr_release(cond);
 }