Мне нужно измерить прошедшее время, чтобы узнать, когда превышен определенный период времени.Измерение прошедшего времени в OS X
Для этого я использовал Ticks()
и Microseconds()
, но обе функции устарели.
CFAbsoluteTimeGetCurrent
не правильный способ использовать, потому что она может работать в обратном направлении, как описано в документации:
Повторные вызовы этой функции не гарантируют монотонно возрастающие результаты. Системное время может уменьшаться из-за синхронизации с внешними ссылками по времени или из-за явного изменения пользователем часов в .
Что еще существует, что не является устаревшим и справедливым в будущем?
' mach_absolute_time'? Увлекательная дискуссия здесь: http://stackoverflow.com/questions/23378063/how-can-i-use-mach-absolute-time-without-overflowing (Не в тему: Привет, Томас!) – matt
(Привет, MattN!) Да , спасибо за указатель о mach_absolute_time - я нашел Q & A 1398 в то же время, но не знал о переполнениях. Я бы ожидал, что есть и другие способы, хотя, возможно, использование таймеров (хотя я не знаю, действуют ли они правильно, если часы меняются назад). –
Одна из других устаревших функций синхронизации, 'UpTime', объявлена в DriverServices.h. Комментарии в этом заголовке говорят «Используйте CFAbsoluteTime или mach time подпрограммы». – JWWalker