NAME

atomic_flag_test_and_set, atomic_flag_test_and_set_explicit — test and set an atomic flag

SYNOPSIS

#include <stdatomic.h>

_Bool atomic_flag_test_and_set(volatile atomic_flag *
object);
_Bool atomic_flag_test_and_set_explicit(volatile atomic_flag *
object,
       memory_order
order);

DESCRIPTION

[CX] [Option Start] 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. [Option End]

Implementations that define the macro __STDC_NO_ATOMICS__ need not provide the <stdatomic.h> header nor support these generic functions.

The atomic_flag_test_and_set_explicit() function shall atomically place the atomic flag pointed to by object into the set state and return the value corresponding to the immediately preceding state. This operation shall be an atomic read-modify-write operation (see 4.15.1 Memory Ordering ). Memory shall be affected according to the value of order.

The atomic_flag_test_and_set() function shall be equivalent to atomic_flag_test_and_set_explicit() called with order set to memory_order_seq_cst.

RETURN VALUE

These functions shall return the value that corresponds to the state of the atomic flag immediately before the effects. The return value true shall correspond to the set state and the return value false shall correspond to the clear state.

ERRORS

No errors are defined.


The following sections are informative.

EXAMPLES

None.

APPLICATION USAGE

None.

RATIONALE

None.

FUTURE DIRECTIONS

None.

SEE ALSO

XBD 4.15.1 Memory Ordering , <stdatomic.h>

CHANGE HISTORY

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

End of informative text.