public member function
<atomic>

std::atomic::fetch_add

如果 T 是整数类型 (1)
T fetch_add (T val, memory_order sync = memory_order_seq_cst) volatile noexcept;T fetch_add (T val, memory_order sync = memory_order_seq_cst) noexcept;
如果 T 是指针类型 (2)
T fetch_add (ptrdiff_t val, memory_order sync = memory_order_seq_cst) volatile noexcept;T fetch_add (ptrdiff_t val, memory_order sync = memory_order_seq_cst) noexcept;
添加到包含的值
val 添加到包含的值,并返回操作前的值。

整个操作是原子的(一个原子读-修改-写操作):在函数读取(并返回)其值到修改其值的时刻之间,该值不会受到其他线程的影响。

此成员函数仅在 atomic整型 (1)指针 (2) 类型的特化中定义(bool 除外)。

如果为第二个参数使用了默认值,则此函数等效于 atomic::operator+=

参数

val
要添加的值。
Tatomic 的模板参数(包含值的类型)。
ptrdiff_t 是一个有符号整数类型。
sync
操作的同步模式。
这应该是 memory_order enum 类型的值之一。

返回值

调用前的存储值。
Tatomic 的模板参数(包含值的类型)。

数据竞争

无数据竞争(原子操作)。内存顺序由参数 sync 指定。

异常安全

无异常保证: 绝不抛出异常。

另见