名前空間
変種
操作

std::atomic<T>::operator&=,|=,^=

From cppreference.com
< cpp‎ | atomic‎ | atomic
 
 
並行性サポートライブラリ
スレッド
(C++11)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
協調的なキャンセル
排他制御
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
(C++11)(C++20で非推奨)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
 
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_freefalseで、volatileオーバーロードがいずれかのオーバーロード解決に参加する場合、非推奨となります。

(C++20以降)

目次

[編集] パラメータ

arg - 算術演算の引数

[編集] 戻り値

結果の値(すなわち、*this変更順序で、対応するメンバ関数の効果が及ぶ直前の値に対して、対応する二項演算子を適用した結果)。

[編集] 注記

ほとんどの複合代入演算子とは異なり、アトミック型の複合代入演算子は左辺引数への参照を返しません。代わりに、格納されている値のコピーを返します。

[編集] 関連項目

引数とアトミックオブジェクトの値との間でビット単位ANDをアトミックに実行し、以前に保持されていた値を取得する
(public member function) [編集]
引数とアトミックオブジェクトの値との間でビット単位ORをアトミックに実行し、以前に保持されていた値を取得する
(public member function) [編集]
引数とアトミックオブジェクトの値との間でビット単位XORをアトミックに実行し、以前に保持されていた値を取得する
(public member function) [編集]
アトミック値を1増減させる
(public メンバー関数) [編集]
アトミック値に加算または減算する
(public メンバー関数) [編集]
English 日本語 中文(简体) 中文(繁體)