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) |
Инициализирует объект атомного типа, созданный по умолчанию, obj значением desired. Функция не является атомарной: одновременный доступ из другого потока, даже через атомарную операцию, является гонкой данных.
Если obj не был создан по умолчанию или эта функция вызывается дважды для одного и того же obj, поведение не определено.
Параметры
| obj | - | указатель на объект атомного типа для инициализации |
| desired | - | значение для инициализации атомного объекта |
Возвращаемое значение
(нет)
Примечания
Эта функция предоставляется для совместимости с C. Если совместимость не требуется, std::atomic можно инициализировать через их конструкторы, отличные от конструктора по умолчанию.
Пример
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющих поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применимо к | Поведение, опубликованное в документе | Корректное поведение |
|---|---|---|---|
| P0558R1 | C++11 | Требовалось точное соответствие типов, потому чтоT выводился из нескольких аргументов |
T выводится толькоиз obj |
См. также
|
(C++11)(устарело в C++20) | константная инициализация атомной переменной со статической областью хранения (макрос-функция) |
| конструирует объект атомного типа (публичный член-функция std::atomic<T>) |
|
Документация на C для atomic_init |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/atomic/atomic_init