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/cpp/atomic/ATOMIC_VAR_INIT