我有一個程序需要每X秒執行一次寫入輸出。程序會在每個輸出之間進行一些間歇輪詢和處理。因此,例如,我可能每5秒輸出一次,但我醒來後每隔1秒輪詢一次,直到我擊中下一個5秒刻度。理論上的程序將在重啓之間運行數月,甚至可能更長。Linux/c + +計時方法,每N秒鐘執行一次,儘管漂移?
我需要每X秒執行一次以保持與掛鐘一致。換句話說,我不能讓時鐘漂移讓我擺脫X秒標記。我不需要完全相同級別的輪詢中的準確性,但我想更頻繁地輪詢一秒鐘,所以我需要一個能夠代表次秒級精度的結構。
我意識到,由於在OS上運行的本質,任何計時器的執行都會有一定的不一致/延遲,因此我不能確定我會在處執行有史以來x秒。但是,這很好,只要它保持一個小的正態分佈,我不想要的是讓漂移讓時間持續地越來越遠。
我也希望儘可能地儘量減少輪詢的CPU成本,但這是次要的問題。
哪些時序結構可用於Linux,最能爲我提供這種級別的準確性?我試圖避免在分發中包含麻煩的應用程序中的提升,但如果必須的話可以使用它。因此,使用標準C++庫的方法是首選,但如果Bosst可以做得更好,我也想知道。
謝謝。
-ps,我不能使用C++ 11。這不是一種選擇,所以我無法使用任何構造。
什麼是您的硬件平臺?您是否計劃針對您的應用程序運行實時內核和實時調度? – Chad
另外,你想從'boost'期待什麼「分配麻煩」?如果您靜態鏈接到它,則無需部署/分發。 – Chad
我沒有實時運行。定期redhawk Linux(可能)。我不需要實時的祕密,只是爲了避免漂移。 – dsollen