Экземпляр типа std::atomic_flag
может быть инициализирован макросом ATOMIC_FLAG_INIT
, и в таком случае его начальное состояние —
#define ATOMIC_FLAG_INIT
std::atomic_flag flag = ATOMIC_FLAG_INIT;
Конструирует новый объект std::atomic_flag
в состоянии
Нет.
STD::ATOMIC_FLAG::TEST_AND_SET
, ФУНКЦИЯ-ЧЛЕН
Атомарно устанавливает флаг и проверяет, был ли он установлен.
bool test_and_set(memory_order order = memory_order_seq_cst)
volatile noexcept;
bool test_and_set(memory_order order = memory_order_seq_cst)
noexcept;
Атомарно устанавливает флаг.
true
, если флаг был установлен в точке вызова; false
, если флаг был сброшен.
Нет.
Примечание. Это атомарная операция чтения-модификации-записи для ячейки памяти, содержащей *this
.
STD::ATOMIC_FLAG_TEST_AND_SET
, ФУНКЦИЯ, НЕ ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно устанавливает флаг и проверяет, был ли он установлен.
bool atomic_flag_test_and_set(
volatile atomic_flag* flag) noexcept;
bool atomic_flag_test_and_set(atomic_flag* flag) noexcept;
return flag->test_and_set();
STD::ATOMIC_FLAG_TEST_AND_SET_EXPLICIT
, ФУНКЦИЯ, HE ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно устанавливает флаг и проверяет, был ли он установлен.
bool atomic_flag_test_and_set_explicit(
volatile atomic_flag* flag, memory_order order) noexcept;
bool atomic_flag_test_and_set_explicit(
atomic_flag* flag, memory_order order) noexcept;
return flag->test_and_set(order);
STD::ATOMIC_FLAG::CLEAR
, ФУНКЦИЯ-ЧЛЕН
Атомарно сбрасывает флаг.
void clear(memory_order order = memory_order_seq_cst) volatile noexcept;
void clear(memory_order order = memory_order_seq_cst) noexcept;
Параметр order должен принимать одно из значений std::memory_order_relaxed
, std::memory_order_release
или std::memory_order_seq_cst
.
Атомарно сбрасывает флаг.
Нет.
Примечание. Это атомарная операция сохранения для ячейки памяти, содержащей *this
.
STD::ATOMIC_FLAG_CLEAR
, ФУНКЦИЯ, НЕ ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно сбрасывает флаг.
void atomic_flag_clear(volatile atomic_flag* flag) noexcept;
void atomic_flag_clear(atomic_flag* flag) noexcept;
flag->clear();
STD::ATOMIC_FLAG_CLEAR_EXPLICIT
, ФУНКЦИЯ, HE ЯВЛЯЮЩАЯСЯ ЧЛЕНОМ КЛАССА
Атомарно сбрасывает флаг.
void atomic_flag_clear_explicit(
volatile atomic_flag* flag, memory_order order) noexcept;
void atomic_flag_clear_explicit(
atomic_flag* flag, memory_order order) noexcept;
return flag->clear(order);
D.3.8. Шаблон класса std::atomic
Шаблон класса std::atomic
является оберткой, позволяющей строить атомарные операции для любого типа, удовлетворяющего следующим условиям.
Параметр шаблона BaseТуре
должен:
• иметь тривиальный конструктор по умолчанию;
• иметь тривиальный копирующий оператор присваивания;
• иметь тривиальный деструктор;
• допускать побитовое сравнение на равенство.