template
BaseType atomic_load(const atomic*) noexcept;
template
BaseType atomic_load_explicit(
volatile const atomic*, memory_order) noexcept;
template
BaseType atomic_load_explicit(
const atomic*, memory_order) noexcept;
template
bool atomic_compare_exchange_strong(
volatile atomic*,
BaseType * old_value, BaseType new_value) noexcept;
template
bool atomic_compare_exchange_strong(
atomic*,
BaseType * old_value, BaseType new_value) noexcept;
template
bool atomic_compare_exchange_strong_explicit(
volatile atomic*, BaseType * old_value,
BaseType new_value, memory_order success_order,
memory_order failure_order) noexcept;
template
bool atomic_compare_exchange_strong_explicit(
atomic*,
BaseType * old_value, BaseType new_value,
memory_order success_order,
memory_order failure_order) noexcept;
template
bool atomic_compare_exchange_weak(
volatile atomic*,
BaseType * old_value, BaseType new_value) noexcept;
template
bool atomic_compare_exchange_weak(
atomic*,
BaseType * old_value, BaseType new_value) noexcept;
template
bool atomic_compare_exchange_weak_explicit(
volatile atomic*,
BaseType * old_value, BaseType new_value,
memory_order success_order,
memory_order failure_order) noexcept;
template
bool atomic_compare_exchange_weak_explicit(
atomic*,
BaseType * old_value, BaseType new_value,
memory_order success_order,
memory_order failure_order) noexcept;
Примечание. Хотя функции, не являющиеся членами класса, определены как шаблоны, они могут быть предоставлены в виде набора перегруженных функций, поэтому задавать явную спецификацию аргументов шаблона не следует.
STD::ATOMIC
, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует экземпляр std::atomic
со значением, инициализированным по умолчанию.
Объявление
atomic() noexcept;
Результат
Конструирует новый объект std::atomic
со значением, инициализированным по умолчанию. Для объектов со статическим временем жизни обеспечивается статическая инициализация.
Примечание. Если время жизни объекта std::atomic
не статическое, то значение, которое будет иметь объект, инициализированный конструктором по умолчанию, непредсказуемо.
Исключения
Нет.
STD::ATOMIC_INIT
, ФУНКЦИЯ, НЕ ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Неатомарно сохраняет указанное значение в объекте типа std::atomic
.
Объявление
template
void atomic_init(
atomic volatile* p, BaseType v) noexcept;
template
void atomic_init(atomic* p, BaseType v) noexcept;
Результат
Неатомарно сохраняет значение 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* p) noexcept;
template
bool atomic_is_lock_free(const atomic* p) noexcept;
Результат
return p->is_lock_free();
STD::ATOMIC::LOAD
, ФУНКЦИЯ-ЧЛЕН
Атомарно загружает текущее значение объекта std::atomic
.
Объявление
Читать дальше