我正在尝试进行使用原子操作的练习。我想使用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,但我不明白。
答案 0 :(得分:2)
你做不到。 std::atomic
允许对单个对象进行各种原子操作。要执行涉及多个对象的原子操作,您需要锁定。
compare_exchange
,正如您的链接所描述的那样,原子地将对象与非原子值进行比较,并根据该比较对其进行更新。它没有比较两个原子值。