在不相等的情况下进行比较并存储

问题描述 投票:0回答:1
如何在原子上比较和存储它的值,如果它们不相等。以下代码无法原子实现此操作

#include <iostream> #include <atomic> int main() { static std::atomic<int> AT(23); int a = 32; if (AT.load() != a) { std::cout << "not equal" << std::endl; AT.store(a); } }
    
c++ atomic stdatomic
1个回答
0
投票
如果您想知道的只是设置是否已更改值,则不需要提前检查值,您可以使用

exchange

函数来设置新值:

#include <iostream> #include <atomic> int main() { static std::atomic<int> AT(23); int a = 32; if (AT.exchange(a) != a) { std::cout << "not equal" << std::endl; } }
如果值没有变化,将其重置为相同的值不重要。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.