我正在寻找一些atomic_set
- 类似函数,它以原子方式设置变量的值,同时返回类似于compare_and_swap
的前一个值。
这是我的期望:
int old_val = atomic_set(mem_address, 10);
答案 0 :(得分:8)
C11 <stdatomic.h>
定义执行此操作的atomic_exchange()
和atomic_exchange_explicit()
。
atomic_exchange_explicit()
表单允许您指定所需的内存排序(普通atomic_exchange()
使用最强的内存排序memory_order_seq_cst
)。