Ответ 1
CLOCK_REALTIME
сообщает о фактическом времени настенных часов.
CLOCK_MONOTONIC
предназначен для измерения относительного реального времени. Он продвигается с той же скоростью, что и фактический поток времени, но не подвержен прерываниям от ручной или автоматической (NTP) регулировки системных часов.
CLOCK_PROCESS_CPUTIME_ID
предназначен для измерения количества процессорного времени, потребляемого процессом.
CLOCK_THREAD_CPUTIME_ID
предназначен для измерения количества процессорного времени, потребляемого потоком, но не поддерживается Linux. glibc имитирует это плохо, просто возвращая количество процессорного времени, затрачиваемого процессом с момента создания потока.
Обновление: Кажется, что современные ядра и glibc теперь поддерживают CLOCK_THREAD_CPUTIME_ID
правильно. У меня нет информации о том, когда она была исправлена.