atomic_fetch_add
时间: 2023-08-06 11:03:40 浏览: 216
`atomic_fetch_add` 是一个原子操作函数,用于实现原子的加法操作。它接受一个指向可修改的内存位置的指针,并将给定的增量添加到该位置的值上,同时返回原始值。
在并发编程中,原子操作是指无法被中断的操作,可以保证在多线程或多进程环境下的正确性。`atomic_fetch_add` 函数可以确保在多线程同时访问同一内存位置时不会发生数据竞争。
示例代码如下:
```c
#include <stdatomic.h>
int main() {
atomic_int value = ATOMIC_VAR_INIT(0);
int increment = 5;
int original_value = atomic_fetch_add(&value, increment);
printf("Original value: %d\n", original_value);
printf("New value: %d\n", atomic_load(&value));
return 0;
}
```
在上面的示例中,我们使用了 `atomic_int` 类型来创建了一个原子变量 `value`,初始值为 0。然后,我们使用 `atomic_fetch_add` 函数将增量值 5 添加到 `value` 中,并且将返回的原始值存储在 `original_value` 变量中。最后,我们分别打印出原始值和新值。
请注意,`atomic_fetch_add` 函数在 `stdatomic.h` 头文件中定义,所以我们需要包含该头文件才能使用这个函数。
阅读全文