atomic_init
|
Определено в заголовочном файле
<stdatomic.h>
|
||
|
void
atomic_init
(
volatile
A
*
obj, C desired
)
;
|
(начиная с C11) | |
Инициализирует объект атомарной переменной, созданный конструктором по умолчанию obj значением desired . Функция не является атомарной: конкурентный доступ из другого потока, даже через атомарную операцию, является состоянием гонки данных.
Это
обобщенная функция
, определенная для всех
атомарных типов объектов
A
. Аргументом является указатель на volatile атомарный тип для принятия адресов как не-volatile, так и
volatile
(например, отображенных в памяти I/O) атомарных объектов, и семантика volatile сохраняется при применении этой операции к volatile атомарным объектам.
C
является неатомарным типом, соответствующим
A
.
Не определено, является ли имя обобщённой функции макросом или идентификатором, объявленным с внешней линковкой. Если определение макроса подавляется для доступа к реальной функции (например, заключено в скобки как ( atomic_init ) ( ... ) ), или программа определяет внешний идентификатор с именем обобщённой функции, поведение не определено.
Содержание |
Параметры
| obj | - | указатель на атомарный объект для инициализации |
| desired | - | значение для инициализации атомарного объекта |
Возвращаемое значение
(нет)
Примечания
atomic_init
— это единственный способ инициализации динамически выделенных атомарных объектов. Например:
_Atomic int *p = malloc(sizeof(_Atomic int)); atomic_init(p, 42);
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.17.2.2 Универсальная функция atomic_init (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.17.2.2 Универсальная функция atomic_init (стр. 201)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.17.2.2 Универсальная функция atomic_init (стр: 274-275)
Смотрите также
|
(C11)
(устарело в C17)
(удалено в C23)
|
инициализирует новый атомарный объект
(функция-макрос) |
|
Документация C++
для
atomic_init
|
|