Примечание
. Если время жизни объектаstd::atomic
не статическое, то значение, которое будет иметь объект, инициализированный конструктором по умолчанию, непредсказуемо.Нет.
STD::ATOMIC_INIT
Неатомарно сохраняет указанное значение в объекте типа std::atomic
template
void atomic_init(
atomic
template
void atomic_init(atomic
Неатомарно сохраняет значение v
*p
. Вызов atomic_init()
с передачей в качестве аргумента объекта atomic
, который не был сконструирован по умолчанию или над которым производились какие-нибудь операции после конструирования, является неопределенным поведением.Примечание
. Поскольку эта операция сохранения неатомарна, то одновременный доступ к объекту, на который указываетp
, из другого потока (даже с помощью атомарной операции) представляет собой гонку за данными.Нет.
STD::ATOMIC
Конструирует экземпляр std::atomic
BaseType
.constexpr atomic(BaseType b) noexcept;
Конструирует новый объект std::atomic
b
. Для объектов со статическим временем жизни обеспечивается статическая инициализация.Нет.
STD::ATOMIC
Сохраняет новое значение в *this
BaseType operator=(BaseType b) volatile noexcept;
BaseType operator=(BaseType b) noexcept;
return this->store(b);
STD::ATOMIC::IS_LOCK_FREE
Сообщает, являются ли операции над *this
bool is_lock_free() const volatile noexcept;
bool is_lock_free() const noexcept;
true
*this
свободны от блокировок, иначе false
.Нет.
STD::ATOMIC_IS_LOCK_FREE
Сообщает, являются ли операции над *this
template
bool atomic_is_lock_free(
volatile const atomic
template
bool atomic_is_lock_free(const atomic
return p->is_lock_free();
STD::ATOMIC::LOAD
Атомарно загружает текущее значение объекта std::atomic
BaseType load(memory_order order = memory_order_seq_cst)
const volatile noexcept;
BaseType load(
memory_order order = memory_order_seq_cst) const noexcept;
Параметр order
std::memory_order_relaxed
, std::memory_order_acquire
, std: :memory_order_consume
или std::memory_order_seq_cst
.Атомарно загружает текущее, хранящееся в *this
Значение, хранящееся в *this
Нет.
Примечание
. Это атомарная операция загрузки для ячейки памяти, содержащей*this
.STD::ATOMIC_LOAD
Атомарно загружает текущее значение объекта std::atomic
template
BaseType atomic_load(volatile const atomic
template
BaseType atomic_load(const atomic
return p->load();