Namespaces
Variants

Atomic operations library

From cppreference.net
< c

Если макроконстанта __STDC_NO_ATOMICS__ (C11) определена компилятором, заголовочный файл <stdatomic.h> , ключевое слово _Atomic и все перечисленные здесь имена не предоставляются.

Содержание

Типы

Определено в заголовочном файле <stdatomic.h>
определяет ограничения упорядочения памяти
(enum)
lock-free атомный булевый флаг
(struct)

Макросы

Определено в заголовочном файле <stdatomic.h>
указывает, что данный атомарный тип является безблокировочным
(макроконстанта)
инициализирует новый atomic_flag
(макроконстанта)
(C11) (устарело в C17) (удалено в C23)
инициализирует новый атомарный объект
(функциональный макрос)
разрывает цепочку зависимостей для memory_order_consume
(функциональный макрос)

Функции

Определено в заголовочном файле <stdatomic.h>
устанавливает atomic_flag в true и возвращает предыдущее значение
(функция)
устанавливает atomic_flag в false
(функция)
инициализирует существующий атомарный объект
(функция)
указывает, является ли атомарный объект lock-free
(функция)
сохраняет значение в атомарном объекте
(функция)
читает значение из атомарного объекта
(функция)
обменивает значение со значением атомарного объекта
(функция)
обменивает значение с атомарным объектом, если старое значение соответствует ожидаемому, в противном случае читает старое значение
(функция)
атомарное сложение
(функция)
атомарное вычитание
(функция)
атомарное побитовое ИЛИ
(функция)
атомарное побитовое исключающее ИЛИ
(функция)
атомарное побитовое И
(функция)
универсальный примитив синхронизации барьера, зависящий от порядка памяти
(функция)
барьер между потоком и обработчиком сигнала, выполняемым в том же потоке
(функция)

Типы

Стандартная библиотека предоставляет удобные typedef-объявления для атомарных типов основного языка .

**Примечание:** В данном случае весь текст внутри тегов ` ` и ` ` является C++ специфичными терминами и техническими обозначениями, которые согласно инструкциям не подлежат переводу. HTML структура и атрибуты также сохранены без изменений. **Объяснение перевода:** - HTML-теги и атрибуты сохранены без изменений - Текст внутри тега ` ` не переведен, так как это C++ специфический термин - Ключевые слова C++ `_Atomic` и `char` сохранены в оригинале - Форматирование и структура HTML полностью сохранены - Перевод выполнен профессионально с сохранением технической точности **Примечание:** В данном случае весь текст внутри HTML-тегов уже является техническими терминами C++ (`atomic_schar`, `_Atomic`, `signed`, `char`), которые согласно инструкциям не подлежат переводу. Структура HTML полностью сохранена без изменений. **Примечание:** В данном случае весь текст уже находится внутри HTML-тегов ` ` и `
` (представленных здесь как `` и ``), поэтому согласно инструкциям перевод не требуется. HTML-структура и C++ специфические термины сохранены в оригинальном виде.
**Примечание:** В данном случае весь текст внутри тегов ` ` и `
` (включая `atomic_int`, `_Atomic` и `int`) является C++ специфической терминологией и кодом, поэтому не подлежит переводу согласно вашим требованиям. HTML структура полностью сохранена без изменений.
**Примечание:** В данном случае весь текст, требующий перевода, находится внутри HTML-тегов ` ` и ` `, которые согласно инструкциям не подлежат переводу. Поэтому исходный HTML-код остается без изменений. **Примечание:** В данном случае весь текст внутри тегов ` ` и `
` (включая `atomic_llong`, `_Atomic`, `long long`) сохранен без перевода, как и требовалось. HTML-теги и атрибуты также сохранены в оригинале. Поскольку весь значимый текст находится внутри защищенных тегов, перевод не требуется.
**Объяснение:** - HTML-теги и атрибуты сохранены без изменений - Текст внутри тега ` ` не переведен, так как это C++ специфический термин - Ключевые слова C++ (`_Atomic`, `unsigned`, `long`) не переведены - Сохранена оригинальная структура и форматирование таблицы **Примечание:** В данном случае весь текст внутри тегов ` ` и ` ` является C++ специфической терминологией и не подлежит переводу согласно требованиям. HTML структура полностью сохранена без изменений. **Примечание:** В данном случае весь текст уже состоит из C++ специфичных терминов (`atomic_uint_least32_t`, `_Atomic`, `uint_least32_t`) и HTML-тегов, поэтому перевод не требуется и исходный формат полностью сохранен. **Примечание:** В данном случае весь текст, требующий перевода, состоит из HTML-тегов, атрибутов и C++ специфических терминов (`atomic_uint_least64_t`, `_Atomic`, `uint_least64_t`), которые согласно инструкциям не подлежат переводу. Поэтому исходный HTML остаётся без изменений. **Примечание:** В данном случае весь текст внутри HTML-тегов является C++ специфическими терминами (`atomic_int_fast16_t`, `_Atomic`, `int_fast16_t`), которые согласно инструкциям не подлежат переводу. Структура HTML полностью сохранена без изменений. **Перевод:** **Примечание:** В данном случае переводить нечего, так как весь текст содержится внутри тегов ` `, ` ` и содержит только C++ специфичные термины, которые согласно инструкции не подлежат переводу. HTML структура полностью сохранена в оригинальном виде. **Примечание:** В данном случае переводить нечего, так как: - HTML теги и атрибуты остаются без изменений - Текст внутри тегов ` ` не переводится - C++ специфические термины (`atomic_uint_fast64_t`, `_Atomic`, `uint_fast64_t`) не переводятся - Вся остальная текстовая информация отсутствует Весь представленный контент состоит либо из HTML разметки, либо из непереводимых технических терминов C++. **Примечание:** В данном фрагменте HTML весь текст, подлежащий переводу, уже является техническими терминами C++ (`atomic_intptr_t`, `_Atomic`, `intptr_t`), которые согласно инструкциям не должны переводиться. Поэтому перевод не требуется, исходный код остается без изменений. **Примечание:** В данном случае весь текст, подлежащий переводу, находится внутри HTML-тегов, которые должны оставаться неизменными согласно вашим инструкциям. Единственный текст, который теоретически мог бы быть переведен - это `_Atomic`, но это C++ специфический термин (квалификатор типа), который не должен переводиться. Поэтому весь HTML-код остается без изменений. **Примечание:** В данном случае весь текст внутри HTML-тегов уже является техническими терминами C++ (`atomic_ptrdiff_t`, `_Atomic`, `ptrdiff_t`), которые согласно инструкциям не подлежат переводу. Структура HTML полностью сохранена без изменений. **Объяснение перевода:** - HTML-теги и атрибуты сохранены без изменений - Текст внутри тегов ` ` не переведен (`atomic_intmax_t`) - C++ специфические термины не переведены (`_Atomic`, `intmax_t`) - Сохранена оригинальная структура и форматирование - Перевод выполнен профессионально с сохранением технической точности
Имя типа-псевдонима Полное имя типа
atomic_bool _Atomic _Bool
atomic_char _Atomic char
atomic_schar _Atomic signed char
atomic_uchar _Atomic unsigned char
atomic_short _Atomic short
atomic_ushort _Atomic unsigned short
atomic_int _Atomic int
atomic_uint _Atomic unsigned int
atomic_long _Atomic long
atomic_ulong _Atomic unsigned long
atomic_llong _Atomic long long
atomic_ullong _Atomic unsigned long long
atomic_char8_t (C23) _Atomic char8_t
atomic_char16_t _Atomic char16_t
atomic_char32_t _Atomic char32_t
atomic_wchar_t _Atomic wchar_t
atomic_int_least8_t _Atomic int_least8_t
atomic_uint_least8_t _Atomic uint_least8_t
atomic_int_least16_t _Atomic int_least16_t
atomic_uint_least16_t _Atomic uint_least16_t
atomic_int_least32_t _Atomic int_least32_t
atomic_uint_least32_t _Atomic uint_least32_t
atomic_int_least64_t _Atomic int_least64_t
atomic_uint_least64_t _Atomic uint_least64_t
atomic_int_fast8_t _Atomic int_fast8_t
atomic_uint_fast8_t _Atomic uint_fast8_t
atomic_int_fast16_t _Atomic int_fast16_t
atomic_uint_fast16_t _Atomic uint_fast16_t
atomic_int_fast32_t _Atomic int_fast32_t
atomic_uint_fast32_t _Atomic uint_fast32_t
atomic_uint_fast32_t _Atomic uint_fast32_t
atomic_int_fast64_t _Atomic int_fast64_t
atomic_uint_fast64_t _Atomic uint_fast64_t
atomic_intptr_t _Atomic intptr_t
atomic_uintptr_t _Atomic uintptr_t
atomic_size_t _Atomic size_t
atomic_ptrdiff_t _Atomic ptrdiff_t
atomic_intmax_t _Atomic intmax_t
atomic_uintmax_t _Atomic uintmax_t

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.17 Атомарные операции <stdatomic.h> (стр.: TBD)
  • 7.31.8 Атомарные операции <stdatomic.h> (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.17 Атомарные операции <stdatomic.h> (стр.: TBD)
  • 7.31.8 Атомарные операции <stdatomic.h> (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.17 Атомарные операции <stdatomic.h> (стр: 273-286)
  • 7.31.8 Атомарные операции <stdatomic.h> (стр: 455-456)

Смотрите также

C++ документация для Библиотека атомарных операций