QT应用程序中的多线程问题。
我有一个multiThreaded应用程序主UI线程和worker 线。我已经设置了具有TimeCriticalPriority的UI线程和 具有正常优先级的工作线程。这样我的UI就不会冻结 在任何时间点。 但是,当我尝试设置屏幕动画以从一个屏幕切换到 其他屏幕我在UI上看到了混蛋。
这里的问题是,当UI线程动画切换时 屏幕,平台从UI线程切换到工作线程 导致混蛋。我该如何解决这个问题?
我认为以下解决方案可以帮助我解决这些问题 的问题。但是我该如何实施解决方案? 1.使工作线程等待直到UI线程中的动画完成。 - 我应该如何使工作线程等待? 2.使UI线程忙,直到动画结束? - 如何让UI线程忙? (可能的解决方法 解决方案可能是在UI线程中调用一些递归函数,所以它确实如此 不要切换到工作线程。)
还有其他方法可以从左到右切换屏幕 反之亦然,而不在QT中使用QPropertyAnimation?
对此的任何建议/帮助都非常高兴。
任何人都可以告诉我可能的解决方案吗?
提前致谢。
最诚挚的问候 Varun Jajee
答案 0 :(得分:0)
您可能希望降低工作线程的优先级(例如降低到LowPriority或LowestPriority),而不是提高UI线程的优先级。这样,您的工作线程将不会从您的程序可能间接依赖的其他线程/进程(例如,OS用于跟踪鼠标的线程或类似线程)中取出CPU周期。 (因为某些操作系统会阻止非根进程/线程提高优先级,所以最好还是降低线程优先级而不是提高优先级)
另外,您可能希望查看是否存在您的UI线程锁定的任何互斥锁,这些互斥锁也可能被工作线程锁定。如果存在,这些可能会导致priority inversion导致UI线程被阻塞,直到工作线程释放互斥锁。