- 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
", revents, revents2);
}
root@ubuntu:~/c++# ./atom4
800 and 888