A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
have only one refcounting system for the activities
[simgrid.git]
/
src
/
kernel
/
activity
/
ActivityImpl.hpp
diff --git
a/src/kernel/activity/ActivityImpl.hpp
b/src/kernel/activity/ActivityImpl.hpp
index
1757126
..
e144296
100644
(file)
--- a/
src/kernel/activity/ActivityImpl.hpp
+++ b/
src/kernel/activity/ActivityImpl.hpp
@@
-34,27
+34,21
@@
namespace activity {
// boost::intrusive_ptr<Activity> support:
friend void intrusive_ptr_add_ref(ActivityImpl * activity)
{
// boost::intrusive_ptr<Activity> support:
friend void intrusive_ptr_add_ref(ActivityImpl * activity)
{
- // Atomic operation! Do not split in two instructions!
- XBT_ATTRIB_UNUSED auto previous = (activity->refcount_)++;
- xbt_assert(previous != 0);
+ activity->ref();
}
friend void intrusive_ptr_release(ActivityImpl * activity)
{
}
friend void intrusive_ptr_release(ActivityImpl * activity)
{
- // Atomic operation! Do not split in two instructions!
- auto count = --(activity->refcount_);
- if (count == 0)
- delete activity;
+ activity->unref();
}
}
- /** @brief Increase the refcount */
+ /** @brief Increase
s
the refcount */
void ref();
void ref();
- /** @brief Reduce
the refcount; returns true if the object was destroyed
*/
-
bool
unref();
+ /** @brief Reduce
s the refcount
*/
+
void
unref();
private:
std::atomic_int_fast32_t refcount_{1};
private:
std::atomic_int_fast32_t refcount_{1};
- int refcount = 1;
};
}}} // namespace simgrid::kernel::activity
};
}}} // namespace simgrid::kernel::activity