2010-06-29 2 views
1

Мне нужно получить миллисекундную точность, я смотрю на this question, но я работаю над окнами: он дает ошибки связывания для функций POSIX.с помощью ansi-c на платформе windows я могу получить время в системе до миллисекундной точности?

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

+1

Это действительно хороший вопрос. Вы должны ограничивать ответы на предоставление разрешения по меньшей мере в миллисекундах в эпоху unix, используя только ANSI-C или Windows API. –

ответ

0

В окнах апи есть SYSTEMTIME структура и некоторые SYS вызовы, чтобы получить SystemTime и МестноеВремя вашей машины, вы можете реализовать таким образом:

SYSTEMTIME systime;

GetSystemTime (& systime);

unsigned int millisec = systime.wMilliseconds;

1

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^