Если я получаю время с помощью clock_gettime (CLOCK_MONOTONIC, x), тогда вызывается доход (например, sched_yield()), а затем снова получите время CLOCK_MONOTONIC, будет ли разница во времени включать время, в течение которого программа не выполнялась (при условии) , или CLOCK_MONOTONIC отслеживает только время выполнения программы? Мои тесты, похоже, подразумевают последнее, но я хотел бы точно знать.Является ли CLOCK_MONOTONIC процессом (или потоком) конкретным?
Кроме того, если CLOCK_MONOTONIC не включает указанное время, существует ли еще один монотонный таймер (т. Е. Один не подвержен скачкам, вызванным ntp)?
Я считаю, что упомянутые корректировки NTP относятся к * скорости * продвижения часов, а не к прыжкам ('CLOCK_MONOTONIC' не будет пропустить назад). Обратите внимание, что 'CLOCK_MONOTONIC' останавливается, когда машина приостановлена, если это имеет значение. – caf
Нет, CLOCK_MONOTONIC не возвращается в Linux. NTP настраивает время путем изменения шага только в том случае, если он выключен более чем на 1/2 секунды, это не влияет на монотонные часы. Для небольших настроек NTP настраивает часы во времени, слегка меняя тактовую частоту тактового сигнала, и CLOCK_MONOTONIC влияет на это. Но ставка тика никогда не будет отрицательной. – janneb
Это не совсем ответит на мой вопрос: я знаю, что он останавливается, пока машина приостановлена, но останавливается ли она при приостановке _process_? – Benubird