| Defined in header |
C atomic_fetch_sub( volatile A* obj, M arg );
C atomic_fetch_sub_explicit( volatile A* obj, M arg, memory_order order );
Atomically replaces the value pointed by
obj with the result of subtraction of
arg from the old value of
obj, and returns the value
obj held previously. The operation is read-modify-write operation. The first version orders memory accesses according to
memory_order_seq_cst, the second version orders memory accesses according to
This is a generic function defined for all atomic object types
A. The argument is pointer to a volatile atomic type to accept addresses of both non-volatile and volatile (e.g. memory-mapped I/O) atomic variables.
M is either the non-atomic type corresponding to
A is atomic integer type, or
A is atomic pointer type.
For signed integer types, arithmetic is defined to use two’s complement representation. There are no undefined results. For pointer types, the result may be an undefined address, but the operations otherwise have no undefined behavior.
|obj||-||pointer to the atomic object to modify|
|arg||-||the value to subtract from the value stored in the atomic object|
|order||-||the memory synchronization ordering for this operation: all values are permitted|
The value held previously by the atomic object pointed to by
| atomic addition
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.