NAME
atomic_exchange
atomic_exchange_explicit —
atomically exchange the value of an object
SYNOPSIS
#include
<stdatomic.h>
C atomic_exchange(volatile A *object, C desired);
C atomic_exchange_explicit(volatile A *object, C desired,
memory_order order);
DESCRIPTION
[CX] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2024 defers to the ISO C standard.
Implementations that define the macro __STDC_NO_ATOMICS__ need not provide the <stdatomic.h> header nor support these generic functions.
The atomic_exchange_explicit () generic function shall atomically replace the value pointed to by object with desired. This operation shall be an atomic read-modify-write operation (see XBD V1_chap04(7)). Memory shall be affected according to the value of order.
The atomic_exchange () generic function
shall be equivalent to atomic_exchange_explicit () called
with order set to
memory_order_seq_cst.
RETURN VALUE
These generic functions shall return the value pointed to by object immediately before the effects.
ERRORS
No errors are defined.
EXAMPLES
None.
APPLICATION USAGE
None.
RATIONALE
None.
FUTURE DIRECTIONS
None.
SEE ALSO
CHANGE HISTORY
First released in Issue 8. Included for alignment with the ISO/IEC 9899:2018 standard.