当前位置: 首页 > 工具软件 > Fetch > 使用案例 >

c语言fetch函数的用法,fetch_add

淳于新
2023-12-01

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

 类似资料: