- XBT_CDEBUG(simix_process, "%p->refcount-- ~> %d", activity, ((int)activity->refcount_) - 1);
- xbt_assert(activity->refcount_ >= 0);
- activity->refcount_--;
- if (XBT_LOG_ISENABLED(simix_process, xbt_log_priority_trace))
- xbt_backtrace_display_current();
- if (activity->refcount_ <= 0)
+ if (activity->refcount_.fetch_sub(1, std::memory_order_release) == 1) {
+ std::atomic_thread_fence(std::memory_order_acquire);