2011-01-23 8 views
2

私は定期的に特定のタスクを実行する必要があり、現在はnanosleepを使用しています。C++:より正確なタイミング間隔

タスクは、毎秒または10秒ごとに実行する必要があります。

がよりこれを行うには良い方法があります:

while(true) 
{ 
doTask(); 
sleep(); 
} 

ウォルター

+2

これはC++とは関係なく、OSによって異なります。 「睡眠」の精度が十分ではないか? – ruslik

+0

[C++クロスプラットフォーム高解像度タイマ]の複製が可能です(http://stackoverflow.com/questions/1487695/c-cross-platform-high-resolution-timer) –

+0

私のアプリケーションはあまり安定していません - 私はドンログファイルで何が起こっているのかは分かりませんが、基本的には10秒ごとにファイルを保存する必要があります。私はそれが数時間走り、それが保存されるはずだったたくさんのファイルをスキップしているのを見ました。何が起こっているのかをどのように伝えることができますか? – Walter

答えて

1

選択肢の一つは、タイムアウトを指定してタスクを実行しますスレッドを作成することができます。

+0

それは睡眠よりも優れたアプローチですか?彼らは同じ決議をしてはいけませんか? – Walter

0

スレッドライブラリを使用して、doTask()を実行するスレッドを作成できます。あなたのメインスレッドは寝ていて、1秒または10秒ごとに実行されます。

これはQTimerとQRunnableを使って行うことができます。

http://doc.qt.nokia.com/latest/qtimer.html

ドックによれば、解像度はほとんどの場合、約1ミリ秒です。あなたの必要に応じて、これで十分です。

関連する問題