Namespaces
Variants

atomic_load, atomic_load_explicit

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

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

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

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

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

Содержание

Параметры

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

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

Текущее значение атомарной переменной, на которую указывает obj .

Ссылки

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

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

сохраняет значение в атомарном объекте
(функция)
C++ документация для atomic_load , atomic_load_explicit