X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a92d7b716f51a53dea7f59db8524d4add713b910..29d98d1ceb682fbc4c734a92353be4b0bcd5d17b:/src/kernel/activity/ActivityImpl.cpp diff --git a/src/kernel/activity/ActivityImpl.cpp b/src/kernel/activity/ActivityImpl.cpp index 08e2a63924..77e657063f 100644 --- a/src/kernel/activity/ActivityImpl.cpp +++ b/src/kernel/activity/ActivityImpl.cpp @@ -10,18 +10,16 @@ simgrid::kernel::activity::ActivityImpl::~ActivityImpl() = default; void simgrid::kernel::activity::ActivityImpl::ref() { - refcount++; + // Atomic operation! Do not split in two instructions! + xbt_assert(refcount_ != 0); + refcount_++; } -bool simgrid::kernel::activity::ActivityImpl::unref() +void simgrid::kernel::activity::ActivityImpl::unref() { - xbt_assert(refcount > 0, - "This activity has a negative refcount! You can only call test() or wait() once per activity."); - - refcount--; - if (refcount>0) - return false; - delete this; - - return true; + xbt_assert(refcount_ > 0, + "This activity has a negative refcount! You can only call test() or wait() once per activity."); + refcount_--; + if (refcount_ == 0) + delete this; }