Puoi spiegare la differenza tra CLOCK_REALTIME
e CLOCK_MONOTONIC
gli orologi restituiti da clock_gettime()
su Linux?Differenza tra CLOCK_REALTIME e CLOCK_MONOTONIC?
Quale è una scelta migliore se ho bisogno di calcolare il tempo trascorso tra i timestamp prodotti da una fonte esterna e l'ora corrente?
Infine, se un daemon NTP regola periodicamente l'ora di sistema, in che modo queste regolazioni interagiscono con ciascuna di CLOCK_REALTIME
e CLOCK_MONOTONIC
?
Nota che sui nuovi kernel è disponibile CLOCK_MONOTONIC_RAW che è ancora migliore (nessuna regolazione NTP). –
@JosephGarvin per un certo valore di "migliore", forse - CLOCK_MONOTONIC_RAW può essere veloce o lento in tempo reale di diverse (o diverse centinaia) parti per milione e la sua velocità può variare a causa di condizioni ambientali come temperatura o voltaggio (o tempo di rubare su macchine virtuali). Su una macchina che funziona correttamente, NTP fa del suo meglio per mitigare tutti questi fattori e quindi CLOCK_MONOTONIC riflette più da vicino * true * il tempo trascorso. – hobbs
Concesso, potrebbe essere interessante avere un CLOCK_MONOTONIC_PARBOILED che è stato influenzato dagli sforzi di NTP per correggere gli errori di frequenza, ma non è influenzato dai suoi sforzi per correggere gli errori di fase, ma questa è una grande complessità per un guadagno dubbio :) – hobbs