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

异常安全

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

另见