gpt4 book ai didi

c++ - 没有锁或互斥锁的原子比较

转载 作者:行者123 更新时间:2023-11-28 03:02:05 24 4
gpt4 key购买 nike

我正在尝试做一个使用原子操作的练习。我想使用 compare_exchange 比较原子数组的位置和原子 int。
我的代码是:

std::array<std::atomic<long int>, 20> xx;
std::atomic<long int> number;

我想做的事:

if (xx[i] > number)
number = xx[i];

如何在我的案例中使用 compare_exchange_weak()?看了很多遍http://en.cppreference.com/w/cpp/atomic/atomic但我不明白。

最佳答案

你不能。 std::atomic 允许在单个 对象上进行各种原子操作。要执行涉及多个对象的原子操作,您需要一把锁。

compare_exchange,如您的链接所述,以原子方式比较对象与非原子 值的相等性,并根据该比较更新它。它不比较两个原子值。

关于c++ - 没有锁或互斥锁的原子比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com