ATOMIC_VAR_INIT
Определено в заголовке <atomic> | ||
|---|---|---|
#define ATOMIC_VAR_INIT(value) /* implementation-defined */ | (с C++11) (устарело в C++20) |
Расширяется до выражения, которое может использоваться для инициализации объекта std::atomic, который может быть инициализирован из value. Если атомарный объект имеет статическую продолжительность хранения, эта инициализация является постоянной инициализацией.
Примечания
Доступ к переменной во время инициализации из другого потока, даже через атомную операцию, является гонкой данных (это может произойти, если адрес сразу передается другому потоку с помощью операции std::memory_order_relaxed).
Эта макрокоманда в основном предоставляется для совместимости с C; она ведет себя так же, как конструктор std::atomic.
Пример
#include <atomic>
#include <iostream>
int main()
{
std::atomic<int> a = ATOMIC_VAR_INIT(1);
// std::atomic<int> a(1); // C++-only alternative
std::cout << "Initialized std::atomic<int> as: " << a << '\n';
}Вывод:
Initialized std::atomic<int> as: 1
См. также
|
(C++11)(устарело в C++20) | неатомарная инициализация объекта атомарного типа, созданного по умолчанию (шаблон функции) |
| создаёт объект атомного типа (общедоступный член-функция std::atomic<T>) |
|
Документация C для ATOMIC_VAR_INIT |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/atomic/ATOMIC_VAR_INIT