atomic_fetch_add_explicit是一个宏定义, 展开后的名称为 __atomic_fetch_add.
__atomic_fetch_add是GCC的一个内置函数, 函数原型为如下, 其作用是将val加到ptr指向的变量中, 整个过程原子性操作. GCC编译程序的时候会将其替换成合适的汇编代码.
1 2 3 |
type __atomic_fetch_add (type *ptr, type val, int memorder) |
在作者的Arch Linux下, atomic_fetch_add_explicit定义在 /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stdatomic.h
1 2 3 4 5 6 7 |
#define atomic_fetch_add(PTR, VAL) __atomic_fetch_add ((PTR), (VAL), \ __ATOMIC_SEQ_CST) #define atomic_fetch_add_explicit(PTR, VAL, MO) \ __atomic_fetch_add ((PTR), (VAL), (MO)) |
其中memorder是memory order的缩写, 用以指明CPU访问内存的顺序 (Memory ordering [wiki]).
memoder相关知识拓展阅读: [留坑]