Se ottengo il tempo utilizzando clock_gettime (CLOCK_MONOTONIC, x), quindi chiama yield (ad esempio sched_yield()), quindi ottieni di nuovo il tempo CLOCK_MONOTONIC, la differenza nei tempi includerà il tempo in cui il programma non è stato in esecuzione (dopo aver ceduto) oppure CLOCK_MONOTONIC tiene traccia solo del tempo durante il quale il programma è in esecuzione? I miei test sembrano implicare quest'ultimo, ma mi piacerebbe sapere per certo.Il processo CLOCK_MONOTONIC (o thread) è specifico?
Inoltre, se CLOCK_MONOTONIC non include il tempo erogato, c'è un altro timer monotonico (cioè uno non soggetto ai salti causati da ntp) che lo fa?
Credo che quelle regolazioni NTP menzionate si riferiscono alla * velocità * dell'ora che avanza, non ai salti ('CLOCK_MONOTONIC' non salterà all'indietro). Nota però che 'CLOCK_MONOTONIC' si ferma mentre la macchina è sospesa, se questo è importante. – caf
No, CLOCK_MONOTONIC non va indietro su Linux. L'NTP regola il tempo di un cambio di passo solo se è spento per più di 1/2 secondi, l'orologio monotono non è influenzato da questo. Per regolazioni minori, NTP regola l'orologio nel tempo modificando leggermente la frequenza di clock, e CLOCK_MONOTONIC è influenzato da questo. Ma il tasso di battito non sarà mai negativo. – janneb
Questo non risponde alla mia domanda - so che si ferma mentre la macchina è sospesa, ma si ferma quando il processo è sospeso? – Benubird