【发布时间】:2011-11-14 14:55:50
【问题描述】:
我有两个(替代)函数处理传感器提供的数据。这些函数在它们自己的线程中运行,并在结果准备好时发出信号。此信号连接到 UI 小部件的插槽,显示结果。 使用其中一项功能,效果很好。然而,当使用另一个时,GUI 开始滞后并很快冻结。
QDebug 显示数据仍在处理中。
在 GUI 线程中运行代码时,没有问题。
问题可能是工作线程生成数据的速度比 UI 绘制数据的速度快,导致 Qt::QueuedConnection 导致一些延迟?如果是这样,我有什么选择?如果没有,我还能检查什么?
【问题讨论】:
-
我们真的需要一些代码来帮助您解决这个问题。我唯一疯狂的猜测是,工作线程正在向 UI 线程发送垃圾邮件,其结果超出了它可能处理的范围。你能控制一下它进行测试,看看它是否有所作为?
-
在包含一个大的、不必要的循环之后,它运行得更加流畅。所以是的,这似乎表明工作线程太快的问题,正如你和我所怀疑的那样。我现在能做什么?
-
我将讨论转移到一个答案,因为我们似乎已经确认了根本原因......
标签: multithreading qt