C17标准指定了一系列原子操作。例如,针对 A
类型的原子对象进行原子读写修改操作在标准中定义为:
C atomic_fetch_add(volatile A *object, M operand);
但我们可以在非原子类型上调用 atomic_fetch_add
:
static int x;
static int foo(void *arg) {
atomic_fetch_add(&x, 3);
}
我的问题是,对于非原子对象x
上的atomic_fetch_add
操作是否保证是原子的?