为什么 std::atomic<T> 模板不提供 sub_fetch() 成员函数?

问题描述

enter image description here

https://en.cppreference.com/w/cpp/atomic/atomic

std::atomic 成员函数只能获取修改前的值, 但我想知道如何以原子方式获取修改后的值

为什么 std::atomic 模板不提供 sub_fetch() 之类的函数

解决方法

确实如此。它叫做operator-=

std::atomic<int> i(5);
int f = i -= 5;
std::cout << f << "\n"; // 0

-= 是您为非原子对象编写此操作的方式,因此 std::atomic 使用相同的运算符。 fetch_* 操作打破常规,因为正常值没有这些操作,但原子操作有。因为他们没有可用的运算符,所以他们必须有字母名称。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...