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

Spec-Zone.ru

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