std::atomic_init
Определён в заголовочном файле <atomic> | ||
|---|---|---|
template< class T >
void atomic_init
( std::atomic<T>* obj,
typename std::atomic<T>::value_type desired ) noexcept;
| (1) | (начиная с C++11) (устарело в C++20) |
template< class T >
void atomic_init
( volatile std::atomic<T>* obj,
typename std::atomic<T>::value_type desired ) noexcept;
| (2) | (начиная с C++11) (устарело в C++20) |
Инициализирует объект atomic obj, созданный конструктором по умолчанию, значением desired. Эта функция не является атомарной: при параллельном доступе из другого потока, даже посредством атомарной операции, возникает гонка данных.
Если obj не был создан конструктором по умолчанию или эта функция вызывается дважды для одного и того же obj, поведение не определено.
Параметры
| obj | - | указатель на объект atomic для инициализации |
| desired | - | значение, которым инициализируется объект atomic |
Возвращаемое значение
(нет)
Примечания
Эта функция предоставлена для совместимости с C. Если совместимость не требуется, std::atomic можно инициализировать с помощью конструкторов, отличных от конструктора по умолчанию.
Пример
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение согласно опубликованной версии | Правильное поведение |
|---|---|---|---|
| P0558R1 | C++11 | требовалось точное совпадение типов, посколькуT выводился из нескольких аргументов |
T выводится толькоиз obj |
См. также
|
(C++11)(устарело в C++20) | константная инициализация атомарной переменной со статической длительностью хранения (макрос функции) |
| создаёт объект atomic (открытая функция-член std::atomic<T>) |
|
Документация C для atomic_init |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/atomic/atomic_init