std::atomic<T>::operator&=,|=,^=
From cppreference.com
atomic<Integral > 特殊化 および atomic<Floating > 特殊化 のみ |
||
| T operator&=( T arg ) noexcept; |
(1) | (C++11以降) |
| T operator&=( T arg ) volatile noexcept; |
(2) | (C++11以降) |
| T operator|=( T arg ) noexcept; |
(3) | (C++11以降) |
| T operator|=( T arg ) volatile noexcept; |
(4) | (C++11以降) |
| T operator^=( T arg ) noexcept; |
(5) | (C++11以降) |
| T operator^=( T arg ) volatile noexcept; |
(6) | (C++11以降) |
現在の値を、以前の値とargを使った計算結果でアトミックに置き換えます。この操作は読み取り-修正-書き込み操作です。
- operator&=はアトミックなビットごとのANDを実行します。return fetch_and(arg) & arg;に相当します。
- operator|=はアトミックなビットごとのORを実行します。return fetch_or(arg) | arg;に相当します。
- operator^=はアトミックなビットごとの排他的ORを実行します。return fetch_xor(arg) ^ arg;に相当します。
|
std::atomic<T>::is_always_lock_freeがfalseで、volatileオーバーロードがいずれかのオーバーロード解決に参加する場合、非推奨となります。 |
(C++20以降) |
目次 |
[編集] パラメータ
| arg | - | 算術演算の引数 |
[編集] 戻り値
結果の値(すなわち、*thisの変更順序で、対応するメンバ関数の効果が及ぶ直前の値に対して、対応する二項演算子を適用した結果)。
[編集] 注記
ほとんどの複合代入演算子とは異なり、アトミック型の複合代入演算子は左辺引数への参照を返しません。代わりに、格納されている値のコピーを返します。
[編集] 関連項目
| 引数とアトミックオブジェクトの値との間でビット単位ANDをアトミックに実行し、以前に保持されていた値を取得する (public member function) | |
| 引数とアトミックオブジェクトの値との間でビット単位ORをアトミックに実行し、以前に保持されていた値を取得する (public member function) | |
| 引数とアトミックオブジェクトの値との間でビット単位XORをアトミックに実行し、以前に保持されていた値を取得する (public member function) | |
| アトミック値を1増減させる (public メンバー関数) | |
| アトミック値に加算または減算する (public メンバー関数) |