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 指定。

異常安全

無異常保證: 絕不丟擲異常。

另見