friend void intrusive_ptr_add_ref(Process* process)
{
+ // Atomic operation! Do not split in two instructions!
auto previous = (process->refcount_)++;
xbt_assert(previous != 0);
(void) previous;
}
friend void intrusive_ptr_release(Process* process)
{
+ // Atomic operation! Do not split in two instructions!
auto count = --(process->refcount_);
if (count == 0)
delete process;
// boost::intrusive_ptr<Mutex> support:
friend void intrusive_ptr_add_ref(Mutex* mutex)
{
+ // Atomic operation! Do not split in two instructions!
auto previous = (mutex->refcount_)++;
xbt_assert(previous != 0);
(void) previous;
}
friend void intrusive_ptr_release(Mutex* mutex)
{
+ // Atomic operation! Do not split in two instructions!
auto count = --(mutex->refcount_);
if (count == 0)
delete mutex;