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

< cpp‎ | atomic‎ | atomic
atomic<整数类型 > 特化才有的成员
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&= 进行原子逐位与。等价于 return fetch_and(arg) & arg;
  • operator|= 进行原子逐位或。等价于 return fetch_or(arg) | arg;
  • operator^= 进行原子逐位异或。等价于 return fetch_xor(arg) ^ arg;

volatile 重载在参与重载决议且 std::atomic<T>::is_always_lock_freefalse 时被弃用。

(C++20 起)

参数

arg - 算术运算的实参

返回值

结果值(即在 *this修改顺序中紧接对应成员函数生效之前的值上应用相应二元运算符的结果)。

注解

与大多数复合赋值运算符不同,原子类型的复合赋值运算符不返回到其左侧运算数的引用。它们代之以返回存储的值的副本。

参阅

原子地进行实参和原子对象的值的逐位与,并获得先前保有的值
(公开成员函数)
原子地进行实参和原子对象的值的逐位或,并获得先前保有的值
(公开成员函数)
原子地进行实参和原子对象的值的逐位异或,并获得先前保有的值
(公开成员函数)
令原子值增加或减少一
(公开成员函数)
与原子值进行加、减
(公开成员函数)