2011-10-25 9 views
1

QTアプリケーションでのMultiThreadingの問題。マルチスレッドアプリケーションでアニメーションを実行中にQT UIジャークが発生する!

私はマルチスレッドアプリケーションをメインのUIスレッドとワーカーに持っています スレッド。私はTimeCriticalPriorityでUI Threadを設定し、Normal Priorityで ワーカースレッドを設定しました。私のUIはいつでも をフリーズすることはありません。 しかし、1つの画面から別の画面に切り替えるための画面をアニメーション表示しようとすると、他の画面の がUI上で動きます。 UIスレッドがジャークをもたらすワーカースレッド にスクリーン、UIスレッドからプラットフォームスイッチを切り替えるアニメーション化されたとき

問題ここでは、です。どうすればこの問題を解決できますか?

これらの解決方法は、 の問題を解決するのに役立つと思われます。しかし、私はどのようにソリューションを実装しますか? 1. UIスレッドのアニメーションが終了するまでワーカースレッドを待機させる。 - ワーカースレッドをどのように待機させるべきですか? 2.アニメーションが終了するまでUIスレッドをビジーにしますか? - UIスレッドをビジー状態にするにはどうすればよいですか? ( 解決策の可能性がありますが、UIスレッドで再帰的な関数が呼び出される可能性がありますので、 はワーカースレッドに切り替わりません)。

QTでQPropertyAnimationを使用せずに画面を左から右に切り替える方法はありますか? と逆の方法はありますか?

これに関する任意の提案/助けは、非常にappriciatedです。

誰でも私にこの可能な解決策を教えてもらえますか?

ありがとうございます。

よろしく VARUN Jajee

答えて

0

の代わりにあなたのUIスレッドの優先順位を上げるには、(例えばLowPriorityまたはLowestPriorityに)あなたのワーカースレッド(S)の優先順位を下げることがあります。そうすれば、ワーカースレッドは、プログラムが間接的に依存している他のスレッド/プロセス(OSがマウスを追跡するために使用するスレッドなど)からCPUサイクルを奪うことはありません。いくつかのOSは非rootプロセス/スレッドが優先順位を上げることを防ぐため、スレッド優先順位を下げる方がスレッド優先順位を下げる方が好ましい)

また、UIスレッドがロックするMutexesがあるかどうかを確認することもできますワーカースレッドによってもロックされます。存在する場合は、priority inversionが原因で、UIスレッドがワーカースレッドがミューテックスを解放するまでブロックされることがあります。

+0

お時間をいただきありがとうございます。 – user952398

+0

あなたの時間と助けてくれてありがとう。私はWindows CE 6.0 OSを使用しています。申し訳ありませんが、以前の記事でこれを指定していませんでした。あなたの提案によると、私はワーカースレッドの優先度をLowPriorityに、それ以降はlowestPriorityに下げましたが、これは役に立たなかった。私はまだ同じ問題に直面しています。私はアプリケーションの設計フェーズに入っています。現在、私はMutexを使用していません。 – user952398

+0

私は他の解決策を試すことができるかどうか教えてください。 – user952398

関連する問題