Ist es vernünftig anzunehmen, dass die CLOCK_MONOTONIC-Uhr auf allen modernen Linux-Servern verfügbar ist?
Ja. Es ist vernünftig anzunehmen, dass.
Aus dem Wortlaut des manuellen Eintrags von gettime können wir schließen, dass wirklich alte Versionen von glibc CLOCK_MONOTONIC
nicht unterstützen . (Ich versuche immer noch herauszufinden, wie alt ... aber wahrscheinlich, als glibc behauptete, POSIX 1003.1-konform zu sein.)
CLOCK_MONOTONIC
wurde (mindestens) in IEEE Std 1003.1, 2004 Edition spezifiziert, obwohl es für eine konforme libc-Implementierung möglich bleibt, CLOCK_MONOTONIC
nicht zu unterstützen .
Der Linux-Kernel-Quellcode hat Unterstützung für einen CLOCK_MONOTONIC
gehabt Uhr mindestens seit Linux 3.0 (2011).
Bei anderen Quellen hängt es auch davon ab, wie die glibc Ihres Systems erstellt wurde. (Wenn mit "emulierten Timern" gebaut, CLOCK_MONOTONIC
wird nicht unterstützt.)
Hier sind einige Fälle, in denen dies nicht unterstützt wird:
-
Es kann Probleme mit einigen alten CPU-Chips geben; z.B. https://bugzilla.redhat.com/show_bug.cgi?id=1499480
-
Es wird von einigen (allen?) Versionen von Cygwin nicht unterstützt.
-
Es wird für einige (alle?) Versionen von uCLibc auf ARM nicht unterstützt.
Es ist auch für CLOCK_MONOTONIC
möglich wird unterstützt, ist aber fehlerhaft:
- Linux clock_gettime(CLOCK_MONOTONIC) seltsames nicht-monotones Verhalten
Ist es vernünftig anzunehmen, dass die CLOCK_MONOTONIC-Uhr auf allen modernen Linux-Servern verfügbar ist?
Zu dieser Frage kann ich nur Stellung nehmen. Ja, es ist vernünftig, dass alle Produktionssysteme, die Sie verwenden, eine monotone Uhr haben, auf die Linux zugreifen kann. Dies gilt auch für virtuelle und Container-Server.
Gutes Engineering schreibt vor, dass Sie dies überprüfen und Fehler ausgeben, wenn eine Annahme nicht erfüllt ist, aber ich würde mich darauf während der Entwurfszeit verlassen.