Для профилирования определенных событий в параллельной программе мне нужно генерировать временные метки. До сих пор я использовал clock_gettime
, но я сталкиваюсь с некоторыми проблемами, некоторые из них из-за проблем с разными часами.
При CLOCK_REALTIME
сгенерированные временные метки, кажется, не соответствуют фактическому порядку событий, что означает, что результирующие временные метки, сопоставленные с событиями, не имеют никакого смысла.
При CLOCK_THREAD_CPUTIME_ID
и CLOCK_PROCESS_CPUTIME_ID
метки времени располагаются в значимом порядке, но я ожидал, что такое поведение будет CLOCK_REALTIME
, а не версиями часов, зависящими от потока / процесса. Кроме того, на странице руководства говорится, что в системах SMP могут быть фиктивные результаты, которых я не вижу.
У меня вопрос: есть ли альтернативы clock_gettime
, и если нет, как я могу подойти к моему недоразумению с доступными системными часами?