命名空间
变体
操作

std::atomic_ref<T>::fetch_sub

来自 cppreference.com
< cpp‎ | atomic‎ | atomic ref
 
 
并发支持库
线程
(C++11)
(C++20)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
协作取消
互斥
(C++11)
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件变量
(C++11)
信号量
闩锁和屏障
(C++20)
(C++20)
期货
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
危险指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 中已弃用)
(C++11)(C++20 中已弃用)
内存排序
原子操作的自由函数
原子标志的自由函数
 
 
atomic_ref<Integral>atomic_ref<Floating> 模板专门化的成员
T fetch_sub( T arg,
             std::memory_order order = std::memory_order_seq_cst ) const noexcept;
(1) (自 C++20 起)
atomic_ref<T*> 模板专门化的成员
T* fetch_sub( std::ptrdiff_t arg,
              std::memory_order order = std::memory_order_seq_cst ) const noexcept;
(2) (自 C++20 起)

原子地将引用对象的当前值替换为值与 arg 的算术减法的结果。此操作是读-修改-写操作。内存根据 order 的值进行影响。

对于有符号整数类型,算术定义为使用二进制补码表示。没有未定义的结果。

对于浮点数类型,生效的 浮点环境 可能与调用线程的浮点环境不同。此操作不必符合相应的 std::numeric_limits 特性,但建议这样做。如果结果不是其类型的可表示值,则结果未指定,但操作否则没有未定义的行为。

对于 T* 类型,结果可能是未定义的地址,但操作否则没有未定义的行为。如果 T 不是对象类型,则程序格式错误。

[编辑] 参数

arg - 算术减法的另一个参数
order - 要强制执行的内存排序约束

[编辑] 返回值

引用对象的立即之前的函数值。

[编辑] 示例