Используя ANSI-C на платформе Windows, я могу получить время системы с точностью до миллисекунд? - PullRequest
1 голос
/ 29 июня 2010

мне нужно получить точность в миллисекундах. Я смотрю на этот вопрос , но я работаю над окнами: он дает ошибки связывания для функций POSIX.

будет очень хорошо, еслия могу получить время UTC с 1970 года с точностью до миллисекунд.

Ответы [ 3 ]

3 голосов
/ 29 июня 2010

Не в ANSI C, но Windows API предоставляет функцию GetSystemTime, как показано здесь: http://msdn.microsoft.com/en-us/library/ms724950(v=VS.85).aspx

1 голос
/ 29 июня 2010

Извините, но вы не можете сделать это, не используя ни ANSI C, ни Windows API.

Вы можете получить системное время с разрешением в миллисекунду GetSystemTime или с разрешением 100 нс с использованием GetSystemTimeAsFileTime, но точность не будет такой хорошей.Системное время обновляется только через каждый тактовый интервал, который составляет где-то около 10-15 миллисекунд в зависимости от базовой архитектуры (SMP, Uniprocessor, ...).

Существуют способы экстраполировать системное время, используя разныеалгоритмы различной сложности, но без поддержки операционной системы вам никогда не будет гарантировано правильное время с высоким разрешением.

0 голосов
/ 29 июня 2010

В Windows API есть структура SYSTEMTIME, и некоторые системные вызовы для получения системного и локального времени вашего компьютера, вы можете реализовать это следующим образом:

SYSTEMTIME systime;

GetSystemTime (& SysTime);

unsigned int millisec = systime.wMilliseconds;

...