函式
<atomic>

std::atomic_fetch_sub_explicit

模板 (integral) (1)
template <class T>T atomic_fetch_sub_explicit (volatile atomic<T>* obj,                             T val, memory_order sync) noexcept;template <class T>T atomic_fetch_sub_explicit (atomic<T>* obj,                             T val, memory_order sync) noexcept;
模板 (pointer) (2)
template <class U>U* atomic_fetch_sub_explicit (volatile atomic<U*>* obj,                              ptrdiff_t val, memory_order sync) noexcept;template <class U>U* atomic_fetch_sub_explicit (atomic<U*>* obj,                              ptrdiff_t val, memory_order sync) noexcept;
過載 (3)
T atomic_fetch_sub_explicit (volatile A* obj, M val, memory_order sync) noexcept;T atomic_fetch_sub_explicit (A* obj, M val, memory_order sync) noexcept;
從包含的值中減去 (顯式記憶體順序)
obj 中包含的值減去 val,使用 sync 指定的*記憶體順序*。

整個操作是原子的:在讀取其值(用於返回)的那一刻和該函式修改它的時候之間,該值不能被修改。

該函式使用 sync 引數指定的記憶體順序進行同步。

有關 atomic 的等效成員函式,請參閱 atomic::fetch_sub

引數

obj
指向一個 atomic 物件的指標,該物件包含一個 整數指標 值。
型別 A 代表其他過載的 原子型別(以防庫不將 C 風格的原子型別 實現為 atomic 的例項化)。
val
要減去的值。
T 是原子物件包含的值的型別(atomic 的模板引數)。
ptrdiff_t 是一個有符號整數型別。
MT(如果 T整數型別)或 ptrdiff_t(如果 T 是指標)。
sync
操作的同步模式。
這應該是 memory_order enum 型別的值之一。

返回值

呼叫前的儲存值。
T(或 U*)是原子物件包含的值的型別(atomic 的模板引數)。

資料競爭

無資料競爭(原子操作)。記憶體順序由引數 sync 指定。

異常安全

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

另見