Spec-Zone.ru › C++

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

См. также

atomic_init
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API