QT应用中的MultiThreading问题。
我有一个multiThreaded应用程序,主UI线程和工作线程。我已经用TimeCriticalPriority设置了UI线程,并用普通优先级设置了工作线程。这样我的UI就不会在任何时候冻结。但是当我尝试动画一个屏幕以从一个屏幕切换到另一个屏幕时,我发现UI上出现了一些异常。
这里的问题是,当UI线程以动画方式切换屏幕时,平台会从UI线程切换到工作线程,从而导致抖动。我该如何解决这个问题?
我认为下面的解决方案可能会帮助我解决这些问题。但是如何实现这个解决方案呢? 1.让工作线程等待,直到UI线程中的动画完成。-我应该如何让工作线程等待? 2.让UI线程忙到动画结束?-我如何让UI线程忙?(可能的解决方法是在UI线程中调用一些递归函数,这样它就不会切换到工作线程)。
在QT中,有没有其他方法可以在没有usingQPropertyAnimation的情况下从左到右切换屏幕,反之亦然?
在这方面的任何建议/帮助都是高度重视的。
有没有人可以告诉我可能的解决方案?
提前谢谢。
最好的问候Varun Jajee
发布于 2011-10-26 04:57:10
您可能希望降低工作线程的优先级(例如LowPriority或LowestPriority),而不是提高UI线程的优先级。这样,你的工作线程就不会占用你的程序可能间接依赖的其他线程/进程的CPU周期(例如,操作系统用来跟踪鼠标的线程或类似线程)。(降低线程优先级也比提高线程优先级更可取,因为有些操作系统会阻止非根进程/线程提高它们的优先级)
此外,您可能希望查看您的UI线程是否锁定了任何Mutexes,这些Mutexes也可能被工作线程锁定。如果有,它们可能会导致priority inversion,从而导致UI线程被阻塞,直到工作线程释放互斥锁。
https://stackoverflow.com/questions/7891246
复制相似问题