2011-10-25 30 views
1

QT应用程序中的多线程问题。在多线程应用程序中动画处理时,QT UI会跳跃!

我有一个multiThreaded应用程序的主UI线程和工作人员 线程。我已经用TimeCriticalPriority和 工作线程设置了具有普通优先级的UI线程。这样我的UI在任何时候都不会冻结 。 但是,当我尝试动画从一个屏幕切换到 其他屏幕的屏幕上,我看到用户界面上的混乱。

这里的问题是,当UI线程动画切换 屏幕时,平台从UI线程切换到工作线程 导致混乱。我该如何解决这个问题?

我想下面的解决方案可能会帮助我解决这些 问题。但是,我如何实施解决方案? 1.使工作线程等待直到UI线程中的动画完成。 - 我应该如何让工作线程等待? 2.使UI线程忙碌直到动画结束? - 我如何使UI线程忙? (可能在 解决方案中可能会调用UI线程中的某些递归函数,因此 不会切换到工作线程)。

是否有任何其他方式从左到右切换屏幕或 反之亦然,而不使用QT中的QPropertyAnimation?

对此的任何建议/帮助都非常感兴趣。

任何人都可以让我知道可能的解决方案吗?

在此先感谢。

问候 Varun的Jajee

回答

0

而是提高你的UI线程的优先级,你可能想要降低你的工作线程(S)(例如,以低优先级或LowestPriority)的优先级。这样你的工作线程就不会将CPU周期从远离程序可能间接依赖的其他线程/进程(例如操作系统用于跟踪鼠标的线程或类似程序)中分离出来。 (最好低于线程优先级而不是提高它们,因为某些操作系统阻止非根进程/线程提高优先级)

另外,您可能想要查看是否有任何互斥锁也被工作者线程锁定。如果有,这些可能会导致priority inversion导致您的UI线程被阻塞,直到工作线程释放互斥量。

+0

非常感谢您的时间和提示。 – user952398

+0

感谢您的时间和帮助。我正在使用Windows CE 6.0操作系统,对不起,我没有在我的早期文章中指定过这一点。根据您的建议,我将工作线程的优先级降低到了LowPriority,之后又降低到了最低优先级,但这并没有帮助。我仍然面临同样的问题。我正处于应用程序的设计阶段,截至目前我没有使用Mutex。 – user952398

+0

请让我知道如果我可以尝试任何其他解决方案! – user952398