Май 29 2010

Системное время

Системное время в Windows содержит информацию о текущих дате и времени и представляет собой так называемое UTC-время (Universal Time Coordinated). Время в формате UTC основывается на среднем времени по Гринвичу. Системное время может быть получено при помощи функции GetSystemTime:
VOID GetSystemTimeCLPSYSTEMTIME lpSystemTime);
Функция записывает результат в структуру типа SYSTEMTIME, адрес которой задается параметром lpSystemTime. Структура типа SYSTEMTIME содержит поля для года, месяца, дня недели, дня, часов, минут, секунд и миллисекунд.
Так как системное время отсчитывается по Гринвичу, то, скорее всего, оно не совпадает с местным временем, которое отображается на панели задач. Получить значение местного времени можно при помощи функции GelLocalTime, которая возвращает информацию в том же формате, что и функция GetSystemTime. Если вы считаете, что ваше приложение может изменять системное время, то это можно осуществить при помощи вызова функции SetSystemTime или SetLocalTime. В некоторых случаях может оказаться полезной пара функций, работающих с информацией о часовом поясе, — GetTimeZonelnformation и SetTimeZonelnformation.
Системное время считывается с часов реального времени, встроенных в компьютер и имеющих автономное питание, в момент запуска Windows. Затем операционная система обеспечивает приращения системного времени, используя прерывания системного таймера, аналогично управлению временем Windows. Таким образом, точность измерения времени с помощью GetSystemTime также определяется разрешением системного таймера.


Май 11 2010

Программирование задержек в исполнении кода

При создании реальных программ часто возникает необходимость «притормозить» исполнение кода в том или ином месте программы. В качестве простейшего примера можно привести игровую программу, перемещающую некий графический объект по экрану с помощью цикла while. Предположим, что вы отладили вашу программу на компьютере с процессором, имеющим тактовую частоту 500 МГц. Что произойдет, если эта программа будет исполняться на более мощном компьютере с тактовой частотой процессора 2 ГГц? Если не предусмотреть специальных мер, то объект будет двигаться гораздо быстрее, и не исключено, что играть станет совершенно невозможно. Типичное решение проблемы заключается в определении характеристик процессора и добавлении программируемых задержек в таких циклах. Другой пример, с которым мы столкнулись совсем недавно, —использование программируемой задержки для калибровки счетчика меток реального времени в классе KTimer.