Namespaces
Variants
Views
Actions

Atomic operations library

From cppreference.com
< cpp

The atomic library provides components for fine-grained atomic operations allowing for lockless concurrent programming. Each atomic operation is indivisible with regards to any other atomic operation that involves the same object. Atomic objects are the only C++ objects free of data races; that is, if one thread writes to an atomic while another thread reads from it, the behavior is well-defined.

Defined in header <atomic>

Contents

Atomic types
(C++11)
atomic class template and specializations for bool, integral, and pointer types
(class template) [edit]
checks if the atomic type's operations are lock-free
(function template) [edit]
Operations on atomic types
atomically replaces the value of the atomic object with a non-atomic argument
(function template) [edit]
atomically obtains the value stored in an atomic object
(function template) [edit]
atomically replaces the value of the atomic object with non-atomic argument and returns the old value of the atomic
(function template) [edit]
atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not
(function template) [edit]
adds a non-atomic value to an atomic object and obtains the previous value of the atomic
(function template) [edit]
subtracts a non-atomic value from an atomic object and obtains the previous value of the atomic
(function template) [edit]
replaces the atomic object with the result of logical AND with a non-atomic argument and obtains the previous value of the atomic
(function template) [edit]
replaces the atomic object with the result of logical OR with a non-atomic argument and obtains the previous value of the atomic
(function template) [edit]
replaces the atomic object with the result of logical XOR with a non-atomic argument and obtains the previous value of the atomic
(function template) [edit]
Flag type and operations
the lock-free boolean atomic type
(class) [edit]
atomically sets the flag to true and returns its previous value
(function) [edit]
atomically sets the value of the flag to false
(function) [edit]
Initialization
non-atomic initialization of a default-constructed atomic object
(function template) [edit]
constant initialization of an atomic variable of static storage duration
(function macro) [edit]
initializes an std::atomic_flag to false
(macro constant) [edit]
Memory synchronization ordering
defines memory ordering constraints for the given atomic operation
(typedef) [edit]
removes the specified object from the std::memory_order_consume dependency tree
(function template) [edit]
generic memory order-dependent fence synchronization primitive
(function) [edit]
fence between a thread and a signal handler executed in the same thread
(function) [edit]