atomic_fetch_sub 函数的返回值 atomic_fetch_sub 函数的返回值是在执行减法操作之前的变量的值。换句话说,它返回的是减法操作之前的旧值,而不是操作后的新值。 示例与说明 以下是一个使用 std::atomic::fetch_sub 的示例代码,用于说明其返回值:
atomic_fetch_sub 函数执行 read-modify-write 操作,使用 memory_order_seq_cst memory_order 约束,自动从 Atom 中存储的值减去 Value。当原子类型为 atomic_address,Value 具有类型 ptrdiff_t 且操作将已存储的指针作为 char * 处理。此操作也为整数类型重载:c++ 复制 integral atomic_fetch_sub( volatile ...
value_type tmp = shared_value.fetch_add(increment, boost::memory_order_relaxed);if( (tmp & mask) != (expected << shift) )returnfalse; expected ++; }for(size_tn =0; n <255; n++) { value_type tmp = shared_value.fetch_sub(increment, boost::memory_order_relaxed);if( (tmp & mas...
Ty atomic<Ty>::fetch_sub ( Ty Value, memory_order Order = memory_order_seq_cst ) volatile _NOEXCEPT; Ty atomic<Ty>::fetch_sub ( Ty Value, memory_order Order = memory_order_seq_cst ) _NOEXCEPT; 參數Value 型別Ty 的值。 Order memory_order。傳...
template <class T> T atomic_fetch_sub (volatile atomic<T>* obj, T val) noexcept; template <class T> T atomic_fetch_sub (atomic<T>* obj, T val) noexcept; template (pointer) (2) template <class U> U* atomic_fetch_sub (volatile atomic<U*>* obj, ptrdiff_t val) noexcept; templa...
atomic_fetch_sub 函式 發行項 2013/02/28 本文內容 參數 傳回值 備註 需求 請參閱 從[ atomic 物件中儲存的現有值減去值。複製 template <class Ty> inline Ty *atomic_fetch_sub( volatile atomic<Ty*> *Atom, Ty Value ) _NOEXCEPT; template <class _Ty> inline _Ty *atomic_fetch_sub(...
fetch_sub 采用 Ordering 參數,該參數說明了此操作的內存順序。所有排序模式都是可能的。請注意,使用 Acquire 使存儲部分成為此操作 Relaxed ,使用 Release 使加載部分成為 Relaxed 。 注意:此方法僅適用於支持原子操作的平台i32. 例子 use std::sync::atomic::{AtomicI32, Ordering}; let foo = AtomicI32::new...
<atomic> std::atomic::fetch_sub if T is integral (1) T fetch_sub (T val, memory_order sync = memory_order_seq_cst) volatile noexcept; T fetch_sub (T val, memory_order sync = memory_order_seq_cst) noexcept; if T is pointer (2) ...
fetch_sub方法执行read-modify-write操作自动减去Value从*this中的存储值, 在Order指定的内存约束内。 #include<iostream>#include<thread>#include<atomic>std::atomic<longlong>data; int main() { long orginal = data.fetch_add(1, std::memory_order_relaxed); ...
T*fetch_sub(std::ptrdiff_targ, std::memory_orderorder=std::memory_order_seq_cst)volatilenoexcept; 以值和arg的算术减法结果原子地替换当前值。操作是读修改写操作。按照order的值影响内存。 对于有符号Integral类型,定义算术为使用补码表示。无未定义结果。