Namespaces
Variants

atomic_store, atomic_store_explicit

From cppreference.net
Определено в заголовочном файле <stdatomic.h>
void atomic_store ( volatile A * obj , C desired ) ;
(1) (начиная с C11)
void atomic_store_explicit ( volatile A * obj, C desired, memory_order order ) ;
(2) (начиная с C11)

Атомарно заменяет значение атомарной переменной, на которую указывает obj , значением desired . Операция является атомарной операцией записи.

Первая версия упорядочивает обращения к памяти в соответствии с memory_order_seq_cst , вторая версия упорядочивает обращения к памяти в соответствии с order . order должен быть одним из memory_order_relaxed , memory_order_release или memory_order_seq_cst . В противном случае поведение не определено.

Это обобщенная функция , определенная для всех атомарных типов объектов A . Аргументом является указатель на volatile атомарный тип для принятия адресов как не-volatile, так и volatile (например, отображенных в памяти I/O) атомарных объектов, и семантика volatile сохраняется при применении этой операции к volatile атомарным объектам. C является неатомарным типом, соответствующим A .

Не определено, является ли имя обобщённой функции макросом или идентификатором, объявленным с внешним связыванием. Если определение макроса подавляется для доступа к реальной функции (например, заключено в скобки как ( atomic_store ) ( ... ) ), или программа определяет внешний идентификатор с именем обобщённой функции, поведение не определено.

Содержание

Параметры

obj - указатель на атомарный объект для модификации
order - порядок синхронизации памяти для данной операции

Возвращаемое значение

(нет)

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.17.7.1 Универсальные функции atomic_store (стр. 206)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.17.7.1 Универсальные функции atomic_store (стр. 282)

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

считывает значение из атомарного объекта
(функция)
C++ documentation для atomic_store , atomic_store_explicit