Si obtengo el tiempo usando clock_gettime (CLOCK_MONOTONIC, x), luego call yield (p. Ej. Sched_yield()), luego obtengo el tiempo CLOCK_MONOTONIC nuevamente, la diferencia en veces incluirá el tiempo que el programa no estuvo en ejecución (habiendo cedido) , o CLOCK_MONOTONIC solo rastrea el tiempo durante el cual el programa se está ejecutando? Mis pruebas parecen implicar lo último, pero me gustaría saberlo con certeza.¿El proceso CLOCK_MONOTONIC (o hilo) es específico?
Además, si CLOCK_MONOTONIC no incluye el tiempo cedido, ¿hay otro temporizador monotónico (es decir, uno no sujeto a saltos causados por ntp) que lo haga?
Creo que los ajustes de NTP que se mencionan se refieren a la * tasa * del reloj que avanza, no a los saltos ('CLOCK_MONOTONIC' no saltará hacia atrás). Sin embargo, tenga en cuenta que 'CLOCK_MONOTONIC' se detiene mientras la máquina está suspendida, si eso es importante. – caf
No, CLOCK_MONOTONIC no retrocede en Linux. NTP ajusta el tiempo mediante un cambio de paso solo si está desactivado en más de 1/2 segundo, el reloj monótono no se ve afectado por esto. Para ajustes más pequeños, NTP ajusta el reloj a lo largo del tiempo cambiando ligeramente la frecuencia de tic del reloj, y CLOCK_MONOTONIC se ve afectado por esto. Pero la tasa de tics nunca será negativa. – janneb
Esto no responde completamente a mi pregunta: sé que se detiene mientras la máquina está suspendida, pero ¿se detiene cuando se suspende el _proceso_? – Benubird