出力を書き込むために X 秒ごとに実行する必要があるプログラムがあります。プログラムは、各出力間で断続的なポーリングと処理を行います。たとえば、私は 5 秒ごとに出力しているかもしれませんが、次の 5 秒のマークに到達するまで 0.1 秒ごとにポーリングを開始します。理論的には、プログラムは再起動までに数か月、場合によってはさらに長く実行されます。
ウォールクロックとの一貫性を保つために、X秒ごとに実行する必要があります。言い換えれば、時計のずれによって X 秒のマークからずれることは許されません。断続的なポーリングでまったく同じレベルの精度は必要ありませんが、1 秒よりも頻繁にポーリングしたいので、1 秒未満の精度を表すことができる構造体が必要です。
OS上で実行するという性質上、タイマーの実行には一定の不一致/遅延があり、正確にx秒で実行されることを保証できないことを認識しています。しかし、それは小さな正規分布にとどまっている限り問題ありません。私が望んでいないのは、ドリフトが一貫してどんどんずれていく時間を許すことです。
また、ポーリングの CPU コストをできる限り最小限に抑えたいと考えていますが、それは二次的な問題です。
このレベルの精度を最もよく提供できる、Linux で使用できるタイミング構造は何ですか? 配布に手間がかかるのでアプリケーションにboostを含めないようにしていますが、必要に応じて使用できます。そのため、標準の C++ ライブラリを使用する方法が好まれますが、Bosst の方が優れている場合は、それも知りたいです。
ありがとうございました。
-ps、c++11 を使用できません。それはオプションではないので、そこから構成を使用する方法はありません。