2011-12-18 10 views
0

Qtimerが2つあります。 T1は100msから開始します。 T2は2msで開始します。Qタイマーが間違っているタイミング

タイミングを制御するためにいくつかのvarを入れました。 なぜ時間がないのですか? T2が55,54、または53になることがありますが、正確な状態になることはありませんか? 私はT1のタイムアウトごとにそれを必要とします、T2は50タイムアウトを完了しました!

ありがとうございました。

誰か他の同期方法を教えてもらえますか?

+3

http://developer.qt.nokia.com/doc/qt-4.8/qtimer.html - 「精度とタイマー解決」を参照してください。 – Mat

答えて

3

CPUタイミングが決して正確ではないため、スレッド同期のためのタイマーに頼ることはできません。他のアプリケーションは、オペレーティングシステムのバックグラウンドで実行され、タイミングを調整するので、そのアプリケーションに頼ることはできません。あなたはこのようなセマフォなどのモニター、などの同期の他の方法、

2

を使用する必要があります

あなたのタイマーはあなたのOSのスレッド、プロセススケジューラへの依存ので、右の間隔を与えることはありません。有効な経過時間を計算するには、タイマーティック方式でシステム時間を取得し、現在の時間とタイマーの開始時間の間の差分を計算する必要があります。同期のためには、スレッド同期の場合には、ミューテックスまたはセマフォが必要です。

関連する問題