atomic_fetch_xor函数
概要:
#include <stdatomic.h> C atomic_fetch_xor(volatile A *object, M operand);
描述:
该泛型函数将参数object指向的原子对象值与参数operand进行按位异或运算,得到的结果替换参数object指向的原子对象值。该操作是个原子的读-修改-写操作。该函数适用于原子整数类型对象,但不包括atomic_bool类型对象。
对于有符号整数类型,算术定义使用二进制补码形式表示,并且溢出时进行安静绕回处理(silent wrap-around on overflow);不存在未定义结果。对于地址类型,结果可能是未定义地址,但操作没有未定义行为。
该泛型函数和复合赋值运算符^=几乎等价,区别主要在于:
1、复合赋值运算符^=不能保证是原子操作。
2、复合赋值运算符^=产生的值是对象的更新值;但该泛型函数返回值是原子对象的先前值。
参数:
volatile A *object
指向原子类型对象的指针。
M operand
与参数object指向原子对象值进行按位异或运算的操作数。如果参数object是原子整数类型,参数operand为对应的非原子类型;如果参数object是原子指针类型,参数operand为ptrdiff_t类型。
返回值:
函数返回函数调用生效前参数object指向的原子对象值。
范例:
|
|
输出:
Before operation
aNumber: 5
After operation
aNumber: 2
注:使用Pelles C编译。
相关内容:
atomic_fetch_add | 原子加运算函数。 |
atomic_fetch_sub | 原子减运算函数。 |
atomic_fetch_or | 原子按位或运算函数。 |
atomic_fetch_xor_explicit | 原子按位异或运算函数。 |
atomic_fetch_and | 原子按位与运算函数。 |