在 Qt5 中,QAtomicInt
上的一些操作已经消失,包括运算符==。
有谁知道我如何比较 Qt5 中的两个 QAtomicInts?旧代码是这样的:
qAtomicInt a;
qAtomicInt b;
if(a == b)
//Do something
据我了解文档 ( http://doc.qt.io/qt-5/sourcebreaks.html ) 我可以这样做:
qAtomicInt a;
qAtomicInt b;
if(a.load() == b.load())
//Do something
但是如果我这样做,比较操作是否仍然是原子的?在此操作过程中,正在比较的值是否会发生变化?
最佳答案
考虑到 Qt5 中的更改,您的代码似乎是正确的。您可以使用 load()
或 loadAcquire()
来比较 QAtomicInt
。
尽管在您比较
中的整数时,这些操作本身被标记为原子操作if(a.load() == b.load())
QAtomicInts 中的值可能会改变。
Operator== 在 Qt4 中可用
http://doc.qt.io/qt-4.8/qatomicint.html#operator-eq-eq
顺便说一下,在文档中没有标记为原子。
关于c++ - 比较两个原子整数 Qt5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270000/