friend kernel::activity::ConditionVariableImpl;
kernel::activity::ConditionVariableImpl* const pimpl_;
-public:
#ifndef DOXYGEN
explicit ConditionVariable(kernel::activity::ConditionVariableImpl* cond) : pimpl_(cond) {}
friend XBT_PUBLIC void intrusive_ptr_release(const ConditionVariable* cond);
#endif
+public:
/** Create a new condition variable and return a smart pointer
*
* @beginrst
/* **************************** 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)
void sg_cond_destroy(const_sg_cond_t cond)
{
- delete cond;
+ intrusive_ptr_release(cond);
}