Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge pull request #179 from Takishipp/signals
[simgrid.git] / src / kernel / activity / ActivityImpl.cpp
index e672384..77e6570 100644 (file)
@@ -10,16 +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_++;
 }
 
 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;
-  delete this;
+  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;
 }