Think of this operation as an atomic version of
{ tmp = *atomic; *atomic += val; return tmp; }.
This call acts as a full compiler and hardware memory barrier.
While atomic has a volatile qualifier, this is a historical artifact and
the pointer passed to it should not be volatile.
In GLib 2.80, the return type was changed from #gssize to #gintptr to add
support for platforms with 128-bit pointers. This should not affect existing
code.
Atomically adds val to the value of atomic.
Think of this operation as an atomic version of { tmp = *atomic; *atomic += val; return tmp; }.
This call acts as a full compiler and hardware memory barrier.
While atomic has a volatile qualifier, this is a historical artifact and the pointer passed to it should not be volatile.
In GLib 2.80, the return type was changed from #gssize to #gintptr to add support for platforms with 128-bit pointers. This should not affect existing code.