Примечание. Если время жизни объекта 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();