Экземпляр типа 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Туре должен:
• иметь тривиальный конструктор по умолчанию;
• иметь тривиальный копирующий оператор присваивания;
• иметь тривиальный деструктор;
• допускать побитовое сравнение на равенство.