atomic_compare_exchange_strong函数
概要:
#include <stdatomic.h> _Bool atomic_compare_exchange_strong(volatile A *object, C *expected, C desired);
描述:
该泛型函数比较参数object指向原子对象的内存内容与参数expected指向对象的内存内容是否相等。如果相等,将使用参数desired的内存内容替换参数object指向原子对象的内存内容;如果不相等,将使用参数object指向原子对象的内存内容更新参数expected指向对象的内存内容。该操作是个原子的读-修改-写操作。
atomic_compare_exchange_strong函数的效果等价于:
if(memcmp(object, expected, sizeof(*object)) == 0) memcpy(object, &desired, sizeof(*object)); else memcpy(expected, object, sizeof(*object));
参数:
volatile A *object
指向原子类型对象的指针。
C *expected
指向对应的非原子类型对象的指针。
C desired
对应的非原子类型对象。
返回值:
函数返回比较结果;如果参数object指向原子对象的内存内容与参数expected指向对象的内存内容相等,函数返回true;如果参数object指向原子对象的内存内容与参数expected指向对象的内存内容不相等,函数返回false。
范例:
|
|
输出:
aNumber: 90000
注:使用Pelles C编译。
相关内容:
atomic_store | 替换原子对象值的函数。 |
atomic_load | 读取原子对象值的函数。 |
atomic_exchange | 读取并替换原子对象值的函数。 |
atomic_compare_exchange_strong_explicit | 根据比较结果,更新值的函数。 |
atomic_compare_exchange_weak | 根据比较结果,更新值的函数。 |