ATOMIC_VAR_INIT
|
Определено в заголовочном файле
<stdatomic.h>
|
||
|
#define ATOMIC_VAR_INIT(value) /* unspecified */
|
(начиная с C11)
(устарело в C17) (удалено в C23) |
|
Раскрывается в выражение, которое может быть использовано для инициализации атомарной переменной того же типа, что и
value
.
Начальное значение атомарного объекта автоматической продолжительности хранения, которое не инициализировано явно, является неопределенным. Однако инициализация по умолчанию (нулевая) статических и thread-local переменных создает допустимое значение.
При инициализации атомарной переменной любой конкурентный доступ, даже через атомарную операцию, является состоянием гонки данных (это может произойти, если адрес немедленно передается в другой поток с помощью операции memory_order_relaxed ).
Содержание |
Примечания
Этот макрос был частью раннего чернового проекта для атомарных типов C11. Он не требуется в C11, устарел в C17 и удален в C23.
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| DR 485 | C11 | спецификация была избыточной и противоречила основному языку | исправлено |
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.17.2.1 Макрос ATOMIC_VAR_INIT (стр: 201)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.17.2.1 Макрос ATOMIC_VAR_INIT (стр: 274)
Смотрите также
|
(C11)
|
инициализирует новый
atomic_flag
(макроконстанта) |
|
Документация C++
для
ATOMIC_VAR_INIT
|
|