ATOMIC_VAR_INIT
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовочном файле
<atomic>
|
||
|
#define ATOMIC_VAR_INIT(value) /* определяется реализацией */
|
(начиная с 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)
(deprecated in C++20)
|
неатомарная инициализация атомарного объекта, созданного по умолчанию
(шаблон функции) |
|
создаёт атомарный объект
(публичная функция-член
std::atomic<T>
)
|
|
|
Документация C
для
ATOMIC_VAR_INIT
|
|