std::atomic_flag_clear, std::atomic_flag_clear_explicit
From cppreference.com
| ヘッダー <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以降) |
引数objが指すstd::atomic_flagの状態をクリア(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のいずれかである場合、動作は未定義です。
目次 |
[edit] パラメータ
| obj | - | アクセスするstd::atomic_flagへのポインタ |
| order | - | メモリ同期順序 |
[edit] 注釈
std::atomic_flag_clearとstd::atomic_flag_clear_explicitは、それぞれobj->clear()およびobj->clear(order)として実装できます。
[edit] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2138 | C++11 | orderはstd::memory_order_consumeでもよい | この場合、動作は未定義である |
[edit] 関連項目
| (C++11) |
ロックフリーなブール型アトミック型 (クラス) |
| フラグをアトミックにtrueに設定し、以前の値を返す (function) | |
| (C++11) |
与えられたアトミック操作に対するメモリ順序制約を定義する (enum) |
| C言語のドキュメント (atomic_flag_clear, atomic_flag_clear_explicit)
| |