È ragionevole presumere che l'orologio CLOCK_MONOTONIC sia disponibile su tutti i moderni server Linux?
Sì. È ragionevole supporre che.
Dalla formulazione dell'immissione manuale di gettime, possiamo dedurre che le versioni molto vecchie di glibc non supportano CLOCK_MONOTONIC
. (Sto ancora cercando di capire quanti anni abbia... ma probabilmente quando glibc ha rivendicato la conformità POSIX 1003.1.)
CLOCK_MONOTONIC
è stato specificato (almeno) in IEEE Std 1003.1, 2004 Edition, sebbene sia possibile che un'implementazione libc conforme non supporti CLOCK_MONOTONIC
.
Il codice sorgente del kernel Linux ha avuto il supporto per un CLOCK_MONOTONIC
clock almeno da Linux 3.0 (2011).
Da altre fonti, dipende anche da come è stato costruito il glibc del tuo sistema. (Se compilato con "timer emulati", CLOCK_MONOTONIC
non è supportato.)
Ecco alcuni casi in cui non è supportato:
-
Potrebbero esserci problemi con alcuni vecchi chip della CPU; per esempio. https://bugzilla.redhat.com/show_bug.cgi?id=1499480
-
Non è supportato per alcune (tutte?) versioni di Cygwin.
-
Non è supportato per alcune (tutte?) versioni di uCLibc su ARM.
È anche possibile per CLOCK_MONOTONIC
essere supportato ma buggato:
- Linux clock_gettime(CLOCK_MONOTONIC) strano comportamento non monotono
È ragionevole presumere che l'orologio CLOCK_MONOTONIC sia disponibile su tutti i moderni server Linux?
Posso solo commentare questa domanda. Sì, è ragionevole che tutti i sistemi di produzione che usi abbiano un orologio monotono a cui Linux sa come accedere. Questo vale anche per i server virtuali e container.
Una buona ingegneria impone di inserire un controllo per questo e di escludere un errore se un presupposto viene infranto, ma farei affidamento su questo in fase di progettazione.