К сожалению, временные метки Unix не гарантируются монотонно увеличивающимися, если только вы не используете MONOTONIC_CLOCK (который не гарантированно существует в данной системе, но на самом деле широко применяется).
Даже если монотонные часы поддерживаются, не гарантируется, что два последовательных вызова clock_gettime вернут разные значения, если между двумя вызовами не прошло достаточно времени.
Поскольку системный вызов time()
не использует монотонные часы, если «Unix timestamp» означает «значение, возвращаемое time(NULL)
», тогда ответ «определенно неправильно использовать Unix timestamp».
Если вы используете монотонные часы, вам также необходимо глобально отслеживать возвращаемые значения, чтобы гарантировать, что каждый вызов выдает отдельное значение. Но в этом случае вы можете просто использовать счетчик. Также стоит отметить, что монотонные часы не отсчитываются от эпохи (обычно они отсчитываются от загрузки системы, хотя стандарт оставляет их полностью открытыми), поэтому вы не можете ничего сделать из сравнения значений монотонных часов из двух разных систем.