Библиотека атомарных операций
Материал из cppreference.com
< cpp
Атомарная библиотека предоставляет компоненты для "мелкозернистых" атомарных операций, обеспечивающих параллельное программирование без блокировки. Каждая атомарная операция неделима по отношению к любой другой атомарной операции, в которой задействован тот же объект. Атомарные объекты свободны от гонок данных.
Определены в заголовочном файле
<atomic> | ||
Атомарные типы | ||
(C++11) |
шаблон класса atomic и его специализации для bool, целочисленных типов и указателей (шаблон класса) | |
(C++20) |
предоставляет атомарные операции с неатомарными объектами (шаблон класса) | |
Операции с атомарными типами | ||
(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) |
заменяет атомарный объект результатом побитового XOR с неатомарным аргументом и получает предыдущее атомарное значение (шаблон функции) | |
(C++20)(C++20) |
блокирует поток до получения уведомления и изменения атомарного значения (шаблон функции) | |
(C++20) |
уведомляет поток, заблокированный в atomic_wait (шаблон функции) | |
(C++20) |
уведомляет все потоки, заблокированные в atomic_wait (шаблон функции) | |
Тип флага и операции | ||
(C++11) |
свободный от блокировок логический атомарный тип (класс) | |
атомарно устанавливает флаг в true и возвращает его предыдущее значение (функция) | ||
(C++11)(C++11) |
атомарно устанавливает значение флага в false (функция) | |
(C++20)(C++20) |
атомарно возвращает значение флага (функция) | |
(C++20)(C++20) |
блокирует поток до тех пор, пока не получит уведомление и не изменится флаг (функция) | |
(C++20) |
уведомляет поток, заблокированный в atomic_flag_wait (функция) | |
(C++20) |
уведомляет все потоки, заблокированные в atomic_flag_wait (функция) | |
Инициализация | ||
(C++11)(устарело в C++20) |
неатомарная инициализация атомарного объекта, созданного по умолчанию (шаблон функции) | |
(C++11)(устарело в C++20) |
константная инициализация атомарной переменной со статической продолжительностью хранения (функция-макрос) | |
(C++11) |
инициализирует std::atomic_flag значением false (макроконстанта) | |
Порядок синхронизации памяти | ||
(C++11) |
определяет ограничения порядка памяти для данной атомарной операции (перечисление) | |
(C++11) |
удаляет указанный объект из дерева зависимостей std::memory_order_consume (шаблон функции) | |
(C++11) |
базовый примитив барьера синхронизации, зависящий от порядка доступа к памяти (функция) | |
(C++11) |
барьер между потоком и обработчиком сигнала, выполняемым в этом же потоке (функция) |
[править] C Совместимость для атомарных типов
Определены в заголовочном файле
<stdatomic.h> | |
(C++23) |
макрос совместимости, такой что _Atomic(T) идентичен std::atomic<T> (функция-макрос) |
Ни макрос |
(начиная с C++23) |
[править] Смотрите также
Документация C по Библиотека атомарных операций
|