【发布时间】:2016-02-27 12:36:33
【问题描述】:
我有一个主要的 GUI 类和另一个 Worker 类:第一个处理 GUI 事物(将 QPixmap 绘制成 QGraphicsScene),第二个处理计算事物(绘制 QLines 和 QPoint s 到那个QPixmap)。
这两个类在两个不同的线程中运行。
当我创建Worker 线程时,我将GUI 的QPixmap 的地址传递给Worker 类,因此它们共享同一个对象。
QPixmap 在Worker 类中修改,并在GUI 类中绘制。即使我没有任何问题,我还是决定使用QMutex 来确保我的程序在绘制时不会尝试访问QPixmap。现在,为了做到这一点,我在 GUI 类和 Worker 类之间共享了一个 QMutex(Worker 类又有一个指向 GUI 的 QMutex 的指针)。每当我阅读或修改QPixmap 时,我都会锁定QMutex。
这是一种有效的方法吗?到目前为止我从未遇到过错误,但我想知道它在逻辑上是否正确以及 Qt 是否提供了更好的方法来完成此操作。
提前谢谢你。
【问题讨论】:
标签: c++ multithreading qt qpixmap qmutex