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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值