atomic_load, atomic_load_explicit
|
Определено в заголовочном файле
<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
|
|