atomic_compare_exchange_strong_explicit函数
概要:
#include <stdatomic.h> _Bool atomic_compare_exchange_strong_explicit( volatile A *object, C *expected, C desired, memory_order success, memory_order failure);
描述:
该泛型函数比较参数object指向原子对象的内存内容与参数expected指向对象的内存内容是否相等。如果相等,将使用参数desired的内存内容替换参数object指向原子对象的内存内容,并且内存会受参数success值影响;如果不相等,将使用参数object指向原子对象的内存内容更新参数expected指向对象的内存内容,并且内存会受参数failure值影响。该操作是个原子的读-修改-写操作。当memory_order类型参数值为memory_order_seq_cst时,atomic_compare_exchange_strong_explicit函数与atomic_compare_exchange_strong函数具有相同的语义。
参数failure不应是memory_order_release或者memory_order_acq_rel。参数failure标识的内存顺序不能强于参数success标识的内存顺序。
参数:
volatile A *object
指向原子类型对象的指针。
C *expected
指向对应的非原子类型对象的指针。
C desired
对应的非原子类型对象。
memory_order success
枚举常量,显式地指定内存顺序。
memory_order failure
枚举常量,显式地指定内存顺序。
返回值:
函数返回比较结果;如果参数object指向原子对象的内存内容与参数expected指向对象的内存内容相等,函数返回true;如果参数object指向原子对象的内存内容与参数expected指向对象的内存内容不相等,函数返回false。
范例:
|
|
输出:
aNumber: 90000
注:使用Pelles C编译。
相关内容:
atomic_store_explicit | 替换原子对象值的函数。 |
atomic_load_explicit | 读取原子对象值的函数。 |
atomic_exchange_explicit | 读取并替换原子对象值的函数。 |
atomic_compare_exchange_strong | 根据比较结果,更新值的函数。 |
atomic_compare_exchange_weak_explicit | 根据比较结果,更新值的函数。 |