2011-10-25 31 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