atomic_fetch_and
- atomic_fetch_and
emplate (integral) (1) |
template <class T> T atomic_fetch_and (volatile atomic<T>* obj, T val) noexcept; template <class T> T atomic_fetch_and (atomic<T>* obj, T val) noexcept; |
---|---|
overloads (2) |
T atomic_fetch_and (volatile A* obj, T val) noexcept; T atomic_fetch_and (A* obj, T val) noexcept; |
- 将原子对象的封装值按位与 val,并返回原子对象的旧值(只适用于整型的 std::atomic 特化版本),整个过程是原子的
#include <iostream> #include <atomic> #include <stdio.h> int main() { short int revents = 0x0888; short int revents2 = __atomic_fetch_and(&revents,0x0800,std::memory_order_seq_cst); printf("%4x and %4x \n", revents, revents2); }
root@ubuntu:~/c++# ./atom4 800 and 888