std::atomic_flag_clear, std::atomic_flag_clear_explicit
Определён в заголовочном файле <atomic> | ||
|---|---|---|
void atomic_flag_clear( volatile std::atomic_flag* obj ) noexcept; | (1) | (начиная с C++11) |
void atomic_flag_clear( std::atomic_flag* obj ) noexcept; | (2) | (начиная с C++11) |
void atomic_flag_clear_explicit( volatile std::atomic_flag* obj,
std::memory_order order ) noexcept;
| (3) | (начиная с C++11) |
void atomic_flag_clear_explicit( std::atomic_flag* obj,
std::memory_order order ) noexcept;
| (4) | (начиная с C++11) |
Атомарно изменяет состояние std::atomic_flag, на который указывает obj, на сброшенное (false).
1,2) Порядок синхронизации памяти —
std::memory_order_seq_cst.
3,4) Порядок синхронизации памяти —
order.
Если
order равен одному из std::memory_order_consume, std::memory_order_acquire и std::memory_order_acq_rel, поведение не определено.Параметры
| obj | - | указатель на std::atomic_flag для доступа |
| order | - | порядок синхронизации памяти |
Примечания
std::atomic_flag_clear и std::atomic_flag_clear_explicit могут быть реализованы соответственно как obj->clear() и obj->clear(order).
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 2138 | C++11 |
order мог быть std::memory_order_consume | в этом случае поведение не определено |
См. также
|
(C++11) | атомарный логический тип без блокировок (класс) |
|
(C++11)(C++11) | атомарно устанавливает флаг в true и возвращает его предыдущее значение (функция) |
|
(C++11) | задаёт ограничения на порядок доступа к памяти для данной атомарной операции (перечисление) |
Документация по C для atomic_flag_clear, atomic_flag_clear_explicit |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/atomic/atomic_flag_clear