c语⾔fetch函数的⽤法,fetch_add
fetch_add
描述 (Description)
它⾃动原⼦地将参数添加到存储在原⼦对象中的值,并获得先前保存的值。
声明 (Declaration)
以下是std :: atomic :: fetch_add的声明。T fetch_add (T val, memory_order sync = memory_order_seq_cst) volatile noexcept; C++11T fetch_add (T val, memory_order sync = memory_order_seq_cst) noexcept;
以下是std :: atomic :: fetch_add的声明(仅限原⼦成员) 模板专业化)。T fetch_add (ptrdiff_t val, memory_order sync =
memory_order_seq_cst) volatile noexcept;
C++11T fetch_add (ptrdiff_t val, memory_order sync = memory_order_seq_cst) noexcept;
参数 (Parameters)arg - ⽤于添加算术加法的另⼀个参数。
order - ⽤于强制执⾏值的内存顺序。
返回值 (Return Value)
它以* this的修改顺序返回紧接此函数效果之前的值。
异常 (Exceptions)
No-noexcept - 这个成员函数永远不会抛出异常。
例⼦ (Example)
在下⾯的⽰例中为std :: atomic :: fetch_add。#include
#include
#include
std::atomic data;
void do_work() {
data.fetch_add(1, std::memory_order_relaxed);
}
int main() {
std::thread th1(do_work);
std::thread th2(do_work);fetch最佳用法
std::thread th3(do_work);
std::thread th4(do_work);
std::thread th5(do_work);
th1.join();
th2.join();
th3.join();
th4.join();
th5.join();
std::cout << "Ans:" << data << '\n'; }
样本输出应该是这样的 -Ans:5

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。