是否有任何原子集操作在C中返回旧值?

phy*_*ash 5 c atomic

我正在寻找一些atomic_set类似于函数的函数,它以原子方式设置变量的值,同时返回类似于的前一个值compare_and_swap.

这是我的期望:

int old_val = atomic_set(mem_address, 10);
Run Code Online (Sandbox Code Playgroud)

caf*_*caf 8

C11 <stdatomic.h>定义atomic_exchange()atomic_exchange_explicit()执行此操作.

atomic_exchange_explicit()表单允许您指定所需的内存排序(普通atomic_exchange()使用最强的内存排序memory_order_seq_cst).