CLOCK_REALTIME
представляет собой предположение машины о текущих настенных часах и времени суток.Как говорят Ignacio и MarkR , это означает, что CLOCK_REALTIME
может прыгать вперед и назад при изменении системных часов, включая NTP.
CLOCK_MONOTONIC
представляет абсолютное истекшее время настенных часов с некоторой произвольной фиксированной точки в прошлом.На него не влияют изменения системных часов времени.
Если вы хотите вычислить прошедшее время между двумя событиями, наблюдаемыми на одной машине без перезагрузки, лучше всего использовать CLOCK_MONOTONIC
option.
Обратите внимание, что в Linux CLOCK_MONTONIC
не измеряет время, потраченное на приостановку, хотя по определению POSIX это должно быть.Вы можете использовать специфичную для Linux CLOCK_BOOTTIME
для монотонных часов, которые продолжают работать в режиме ожидания.