atomic_init
Определено в заголовке <stdatomic.h> |
||
|---|---|---|
void atomic_init( volatile A* obj, C desired ); |
(с C11) |
Инициализирует объект атомарного типа, созданный по умолчанию, со значением desired. Функция не является атомарной: одновременный доступ из другого потока, даже через атомарную операцию, является гонкой данных.
Это общая функция, определённая для всех типов атомарных объектов A. Аргумент — указатель на изменчивый атомарный тип, принимающий адреса как неизменчивых, так и изменчивых (например, с доступом ввода-вывода через память) атомарных объектов; при применении этой операции к изменчивым атомарным объектам сохраняется семантика изменчивости. C — неатомарный тип, соответствующий A.
Не определено, является ли имя общей функции макросом или идентификатором, объявленным со связью внешнего уровня. Если определение макроса подавлено для доступа к фактической функции (например, в скобках, как (atomic_init)(...)), или программа определяет внешний идентификатор с именем общей функции, поведение не определено.
Параметры
| obj | - | указатель на атомарный объект, подлежащий инициализации |
| desired | - | значение, которым необходимо инициализировать атомарный объект |
Возвращаемое значение
(не используется)
Примечания
atomic_init — единственный способ динамической инициализации атомарных объектов. Например:
_Atomic int *p = malloc(sizeof(_Atomic int)); atomic_init(p, 42);
Ссылки
- Стандарт C23 (ISO/IEC 9899:2023):
- 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 |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/atomic/atomic_init