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

时间:2018-05-14 06:07:48

标签: c atomic

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

这是我的期望:

int old_val = atomic_set(mem_address, 10);

1 个答案:

答案 0 :(得分:8)

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

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