일부 출력을 작성하려면 매 X 초마다 실행해야하는 프로그램이 있습니다. 프로그램은 각 출력 사이에 간헐적 인 폴링 및 처리를 수행합니다. 그래서 예를 들어 5 초마다 결과를 출력 할 수 있습니다.하지만 다음 5 초를 칠 때까지 매 0.1 초마다 폴링을합니다. 이론상의 프로그램은 재시작 사이에 몇 달 동안 실행될 수 있습니다.드리프트에도 불구하고 매 N 초마다 실행하는 Linux/C++ 타이밍 방법?
벽 시계와 일관성을 유지하려면 매 X 초마다 실행해야합니다. 즉, 시계 드리프트가 X 초 표시에서 벗어나도록 허용 할 수 없습니다. 간헐적 인 폴링에서 정확성과 동일한 수준을 필요로하지는 않지만보다 자주 두 번째 폴링을하고 싶습니다. 따라서 초당 순도를 나타낼 수있는 구조체가 필요합니다.
가 나는 OS에서 실행의 본질에 의해 내가 정확히 이제까지 초 X 에서 실행거야 gaurentee 수 없도록 모든 타이머의 실행에 특정 불일치/지연이있을 수 줘야 것을 알고 있습니다. 그러나 그것은 작은 정규 분포를 유지할 때까지 오랫동안 괜찮습니다. 제가 원하지 않는 것은 드리프트가 시간이 계속 더 멀어 지도록 허용하는 것입니다.
가능한 한 폴링의 CPU 비용을 최소화하려고하지만 두 번째 관심사입니다.
필자에게이 수준의 성능을 제공 할 수있는 Linux 용 타이밍 구성 요소는 무엇입니까? 번거로운 배포로 인해 응용 프로그램을 향상시키지 않으려 고하지만, 필요한 경우 사용할 수 있습니다. 그래서 표준 C++ 라이브러리를 사용하는 메소드가 선호됩니다. 그러나 Bosst가 더 잘 할 수 있다면 그것을 알고 싶습니다.
감사합니다.
-ps이므로 C++ 11을 사용할 수 없습니다. 그것은 옵션이 아니므로 어떤 구문을 사용할 수있는 방법이 없습니다.
하드웨어 플랫폼이 무엇입니까? 실시간 커널과 실시간 스케줄링을 계획하고 있습니까? – Chad
또한, "배급에 불편을 겪고있는"것이 무엇입니까? 정적으로 링크하면 배치/배포 할 수 없습니다. – Chad
실시간으로 실행되지 않습니다. 보통의 레드햇 리눅스 (아마). 나는 드리프트를 피하기 위해 실시간의 퍼시션을 필요로하지 않습니다. – dsollen