Standard library header <stdatomic.h> (C++23)
From cppreference.net
Этот заголовочный файл изначально находился в стандартной библиотеке C ( <stdatomic.h> ).
Этот заголовок является частью библиотеки поддержки параллелизма .
Не определено, предоставляет ли
<stdatomic.h>
какие-либо объявления в пространстве имён
std
.
Макросы |
||
|
(C++23)
|
макрос совместимости, такой что
_Atomic
(
T
)
идентичен
std::
atomic
<
T
>
(функциональный макрос) |
|
|
(C++11)
|
инициализирует
std::atomic_flag
значением
false
(макроконстанта) |
|
Типы |
||
|
(C++11)
|
безблокировочный булевый атомарный тип
(класс) |
|
|
(C++11)
|
определяет ограничения упорядочения памяти для данной атомарной операции
(enum) |
|
|
(C++11)
|
std::
atomic
<
bool
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
char
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
signed
char
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
unsigned
char
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
short
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
unsigned
short
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
int
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
unsigned
int
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
long
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
unsigned
long
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
long
long
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
unsigned
long
long
>
(typedef) |
|
|
(C++20)
|
std::
atomic
<
char8_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
char16_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
char32_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
wchar_t
>
(определение типа) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
int8_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
uint8_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
int16_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
uint16_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
int32_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
uint32_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
int64_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
uint64_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
int_least8_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_least8_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
int_least16_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_least16_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
int_least32_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_least32_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
int_least64_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_least64_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
int_fast8_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_fast8_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
int_fast16_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_fast16_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
int_fast32_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_fast32_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
int_fast64_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uint_fast64_t
>
(определение типа) |
|
|
(C++11)
(optional)
|
std::
atomic
<
std::
intptr_t
>
(typedef) |
|
|
(C++11)
(опционально)
|
std::
atomic
<
std::
uintptr_t
>
(псевдоним типа) |
|
|
(C++11)
|
std::
atomic
<
std::
size_t
>
(typedef) |
|
|
(C++11)
|
std::
atomic
<
std::
ptrdiff_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
intmax_t
>
(определение типа) |
|
|
(C++11)
|
std::
atomic
<
std::
uintmax_t
>
(определение типа) |
|
Функции |
||
|
(C++11)
|
проверяет, являются ли операции атомарного типа свободными от блокировок
(шаблон функции) |
|
|
(C++11)
(C++11)
|
атомно заменяет значение атомарного объекта неатомарным аргументом
(шаблон функции) |
|
|
(C++11)
(C++11)
|
атомарно получает значение, хранящееся в атомарном объекте
(шаблон функции) |
|
|
(C++11)
(C++11)
|
атомически заменяет значение атомарного объекта неатомарным аргументом и возвращает старое значение атомарного объекта
(шаблон функции) |
|
|
атомарно сравнивает значение атомарного объекта с неатомарным аргументом и выполняет атомарный обмен при равенстве или атомарную загрузку при неравенстве
(шаблон функции) |
||
|
(C++11)
(C++11)
|
добавляет неатомарное значение к атомарному объекту и получает предыдущее значение атомарного объекта
(шаблон функции) |
|
|
(C++11)
(C++11)
|
вычитает неатомарное значение из атомарного объекта и получает предыдущее значение атомарного объекта
(шаблон функции) |
|
|
(C++11)
(C++11)
|
заменяет атомарный объект результатом побитового И с неатомарным аргументом и получает предыдущее значение атомарного объекта
(шаблон функции) |
|
|
(C++11)
(C++11)
|
заменяет атомарный объект результатом побитового ИЛИ с неатомарным аргументом и получает предыдущее значение атомарного объекта
(шаблон функции) |
|
|
(C++11)
(C++11)
|
заменяет атомарный объект результатом побитового исключающего ИЛИ с неатомарным аргументом и получает предыдущее значение атомарного объекта
(шаблон функции) |
|
|
(C++11)
(C++11)
|
атомически устанавливает флаг в значение
true
и возвращает его предыдущее значение
(функция) |
|
|
(C++11)
(C++11)
|
атомарно устанавливает значение флага в
false
(функция) |
|
|
(C++11)
|
универсальный примитив синхронизации барьера, зависящий от порядка памяти
(функция) |
|
|
(C++11)
|
барьер между потоком и обработчиком сигнала, выполняемым в том же потоке
(функция) |
|
Синопсис
template<class T> using __std_atomic = std::atomic<T>; // только для демонстрации #define _Atomic(T) __std_atomic<T> #define ATOMIC_BOOL_LOCK_FREE /* см. описание */ #define ATOMIC_CHAR_LOCK_FREE /* см. описание */ #define ATOMIC_CHAR16_T_LOCK_FREE /* см. описание */ #define ATOMIC_CHAR32_T_LOCK_FREE /* см. описание */ #define ATOMIC_WCHAR_T_LOCK_FREE /* см. описание */ #define ATOMIC_SHORT_LOCK_FREE /* см. описание */ #define ATOMIC_INT_LOCK_FREE /* см. описание */ #define ATOMIC_LONG_LOCK_FREE /* см. описание */ #define ATOMIC_LLONG_LOCK_FREE /* см. описание */ #define ATOMIC_POINTER_LOCK_FREE /* см. описание */ using std::memory_order; // см. описание using std::memory_order_relaxed; // см. описание using std::memory_order_consume; // см. описание using std::memory_order_acquire; // см. описание using std::memory_order_release; // см. описание using std::memory_order_acq_rel; // см. описание using std::memory_order_seq_cst; // см. описание using std::atomic_flag; // см. описание using std::atomic_bool; // см. описание using std::atomic_char; // см. описание using std::atomic_schar; // см. описание using std::atomic_uchar (Примечание: В соответствии с требованиями, HTML-теги и атрибуты сохранены без изменений, термин `std::atomic_uchar` не переведен как C++ специфичный термин, а текст внутри тегов не подлежал переводу. Исходный элемент не содержит переводимого текста за пределами технических терминов.); // см. описание using std::atomic_short; // см. описание using std::atomic_ushort; // см. описание using std::atomic_int; // см. описание using std::atomic_uint; // см. описание using std::atomic_long; // см. описание using std::atomic_ulong; // см. описание using std::atomic_llong; // см. описание using std::atomic_ullong; // см. описание using std::atomic_char8_t; // см. описание using std::atomic_char16_t; // см. описание using std::atomic_char32_t; // см. описание using std::atomic_wchar_t; // см. описание using std::atomic_int8_t; // см. описание using std::atomic_uint8_t; // см. описание using std::atomic_int16_t; // см. описание using std::atomic_uint16_t; // см. описание using std::atomic_int32_t; // см. описание using std::atomic_uint32_t (Примечание: В данном случае переводить нечего, так как весь текст состоит из HTML-тегов, атрибутов и C++ специфичного термина std::atomic_uint32_t, которые согласно инструкции не подлежат переводу); // см. описание using std::atomic_int64_t; // см. описание using std::atomic_uint64_t; // см. описание using std::atomic_int_least8_t; // см. описание using std::atomic_uint_least8_t; // см. описание using std::atomic_int_least16_t; // см. описание using std::atomic_uint_least16_t; // см. описание using std::atomic_int_least32_t; // см. описание using std::atomic_uint_least32_t; // см. описание using std::atomic_int_least64_t; // см. описание using std::atomic_uint_least64_t; // см. описание using std::atomic_int_fast8_t; // см. описание using std::atomic_uint_fast8_t; // см. описание using std::atomic_int_fast16_t; // см. описание using std::atomic_uint_fast16_t (Примечание: Текст не требует перевода, так как содержит только HTML-теги, атрибуты и C++ специфичный термин `std::atomic_uint_fast16_t`, который согласно инструкциям не подлежит переводу); // см. описание using std::atomic_int_fast32_t; // см. описание using std::atomic_uint_fast32_t; // см. описание using std::atomic_int_fast64_t; // см. описание using std::atomic_uint_fast64_t; // см. описание using std::atomic_intptr_t; // см. описание using std::atomic_uintptr_t; // см. описание using std::atomic_size_t; // см. описание using std::atomic_ptrdiff_t (Примечание: В данном случае переводить нечего, так как элемент содержит только HTML-разметку и неизменяемый C++-специфичный термин std::atomic_ptrdiff_t, который согласно требованиям не подлежит переводу); // см. описание using std::atomic_intmax_t; // см. описание using std::atomic_uintmax_t; // см. описание using std::atomic_is_lock_free; // см. описание using std::atomic_load; // см. описание using std::atomic_load_explicit; // см. описание using std::atomic_store; // см. описание using std::atomic_store_explicit; // см. описание using std::atomic_exchange; // см. описание using std::atomic_exchange_explicit; // см. описание using std::atomic_compare_exchange_strong; // см. описание using std::atomic_compare_exchange_strong_explicit; // см. описание using std::atomic_compare_exchange_weak; // см. описание using std::atomic_compare_exchange_weak_explicit; // см. описание using std::atomic_fetch_add; // см. описание using std::atomic_fetch_add_explicit; // см. описание using std::atomic_fetch_sub; // см. описание using std::atomic_fetch_sub_explicit; // см. описание using std::atomic_fetch_or; // см. описание using std::atomic_fetch_or_explicit; // см. описание using std::atomic_fetch_xor; // см. описание using std::atomic_fetch_xor_explicit; // см. описание using std::atomic_fetch_and; // см. описание using std::atomic_fetch_and_explicit; // см. описание using std::atomic_flag_test_and_set; // см. описание using std::atomic_flag_test_and_set_explicit; // см. описание using std::atomic_flag_clear; // см. описание using std::atomic_flag_clear_explicit; // см. описание #define ATOMIC_FLAG_INIT /* см. описание */ using std::atomic_thread_fence; // см. описание using std::atomic_signal_fence; // см. описание