atomic_fetch_add 是一个原子操作,用于实现原子的加法操作。它可以确保在多线程环境下对变量进行安全且无竞争的自增操作。
以下是 atomic_fetch_add 的一般形式:
T atomic_fetch_add(std::atomic<T>* obj, T arg);
其中:
obj是指向要进行自增操作的std::atomic对象的指针。arg是要添加到对象当前值上的参数。
此函数将返回执行自增操作后的旧值,并将新值存储在 obj 指向的位置。注意,此操作是原子性的,不会被其他线程中断或交叉执行。
例如,以下代码展示了如何使用 atomic_fetch_add 对一个整数进行自增操作:
#include <atomic>
int main() {
std::atomic<int> num(0);
int oldValue = atomic_fetch_add(&num, 1);
// 输出旧值和新值
std::cout << "Old value: " << oldValue << std::endl;
std::cout << "New value: " << num.load() << std::endl;
return 0;
}
这个例子中,我们创建了一个初始值为 0 的原子整型对象 num。然后,使用 atomic_fetch_add(&num, 1) 对其进行自增操作,并将返回的旧值存储在 oldValue 变量中。最后,通过调用 num.load() 来获取新的值并输出。
请注意,atomic_fetch_add 在 C++11 引入的原子操作库中提供。它是确保多线程环境下数据同步和一致性的重要工具之一。
内容由零声教学AI助手提供,问题来源于学员提问




