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
Use explicit atomic operations.
[simgrid.git]
/
src
/
simix
/
smx_synchro_private.hpp
diff --git
a/src/simix/smx_synchro_private.hpp
b/src/simix/smx_synchro_private.hpp
index
7349982
..
5846b04
100644
(file)
--- a/
src/simix/smx_synchro_private.hpp
+++ b/
src/simix/smx_synchro_private.hpp
@@
-31,15
+31,12
@@
public:
// boost::intrusive_ptr<Mutex> support:
friend void intrusive_ptr_add_ref(MutexImpl* mutex)
{
// boost::intrusive_ptr<Mutex> support:
friend void intrusive_ptr_add_ref(MutexImpl* mutex)
{
- // Atomic operation! Do not split in two instructions!
- XBT_ATTRIB_UNUSED auto previous = (mutex->refcount_)++;
+ XBT_ATTRIB_UNUSED auto previous = mutex->refcount_.fetch_add(1);
xbt_assert(previous != 0);
}
friend void intrusive_ptr_release(MutexImpl* mutex)
{
xbt_assert(previous != 0);
}
friend void intrusive_ptr_release(MutexImpl* mutex)
{
- // Atomic operation! Do not split in two instructions!
- auto count = --(mutex->refcount_);
- if (count == 0)
+ if (mutex->refcount_.fetch_sub(1) == 1)
delete mutex;
}
delete mutex;
}