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