c++ - 比较两个原子整数 Qt5

标签 c++ qt qt5 atomic

在 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/

相关文章:

c++ - 为 Web 编写 C++

c++ - 被信号中断的系统调用仍需完成

c++ - 如何删除双向链表数据并返回?

c++ - 关于断开命名管道的 Sybase IQ 问题(在负载表上)

c++ - 如何将openCV中裁剪图像的数据数组转换为Qt中的RGB直方图

ios - 如何使用Qt框架设置ios应用程序图标

c++ - Qt:当 QMainWindow 最大化/未最大化时触发代码

c++ - QGraphicsScene 子类忽略鼠标按下事件

c++ - 在 Qt 资源系统 (qt 5.0.2) 中读取和写入文件

c++ - Qtabwidget 每个标签标题背景色