ATOMIC_EXCHANGE(3) Library Functions Manual ATOMIC_EXCHANGE(3)

atomic_exchange atomic_exchange_explicitatomically exchange the value of an object

#include <stdatomic.h>

C atomic_exchange(volatile A *object, C desired);
C atomic_exchange_explicit(volatile A *object, C desired,
       memory_order order);

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 . 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.

These generic functions shall return the value pointed to by object immediately before the effects.

No errors are defined.

None.

None.

None.

None.

XBD V1_chap04(7), <stdatomic.h>

First released in Issue 8. Included for alignment with the ISO/IEC 9899:2018 standard.

June 14, 2024 posix.fail