atomic_flag_test_and_set, atomic_flag_test_and_set_explicit
From cppreference.com
C
Concurrency support (C11)
Concurrency support library
Threads
Atomic operations
(until C23)
Atomic flags
atomic_flag_test_and_set
Memory ordering
Mutual exclusion
Condition variables
Thread-local storage
Defined in header
<stdatomic.h>
_Bool atomic_flag_test_and_set( volatile atomic_flag * obj );
(1)
(since C11)
_Bool atomic_flag_test_and_set_explicit( volatile atomic_flag * obj, memory_order order );
(2)
(since C11)
Atomically changes the state of a atomic_flag
pointed to by obj
to set (true) and returns the previous value. The first version orders memory accesses according to memory_order_seq_cst , the second version orders memory accesses according to order
.
The argument is pointer to a volatile atomic flag to accept addresses of both non-volatile and volatile (e.g. memory-mapped I/O) atomic flags.
Contents
[edit] Parameters
obj
-
pointer to the atomic flag object to modify
order
-
the memory synchronization ordering for this operation: all values are permitted
[edit] Return value
The previous value held by the atomic flag pointed to by obj
.
[edit] References
- C17 standard (ISO/IEC 9899:2018):
- 7.17.8.1 The atomic_flag_test_and_set functions (p: 209)
- C11 standard (ISO/IEC 9899:2011):
- 7.17.8.1 The atomic_flag_test_and_set functions (p: 285-286)
[edit] See also
C++ documentation for atomic_flag_test_and_set, atomic_flag_test_and_set_explicit