Я пытаюсь использовать функцию () функции doAction() в примере ниже) через определенное время. В следующем примере я должен использовать функцию 10 раз, сначала 1 миллисекунду после ввода цикла while, второй - через 3 секунды после ввода цикла while и т. Д.Альтернатива GetSystemTime() для отслеживания пройдена
Проще говоря, мне нужен способ измерения времени, прошедшего с начала цикла while, в любой момент, чтобы я мог применить функцию doAction() в определенные моменты.
ВОПРОС: Какой метод я могу использовать для отслеживания того, сколько времени прошло между начальным моментом и любым другим моментом после этого? Отредактировано: Я использую Windows 7
В настоящее время я использую следующие настройки с помощью функции GetSystemTime(), которая работает, хотя есть некоторые вопросы:
int countVar = 0;
int timeList[10] = {1, 3, 6, 7, 9, 11, 14, 15, 17, 19};
/*values representing milliseconds after initiating the while loop*/
SYSTEMTIME timeBuffer;
GetSystemTime(&timeBuffer);
int initialTime = timeBuffer.wMilliseconds + (timeBuffer.wSecond*1000) + (timeBuffer.wMinute*60000);
int currentTime;
while (true)
{
GetSystemTime(&timeBuffer);
currentTime = timeBuffer.wMilliseconds + (timeBuffer.wSecond*1000) + (timeBuffer.wMinute*60000) - initialTime;
if (currentTime >= timeList(countVar)
{
doAction();
if (countVar!=9)
countVar++;
else
break;
}
}
функция DoAction просто очень быстрая функция, которая не оказала бы существенного влияния на время.
void doAction() /*this is the action done which is completed in
microseconds hence would not have a significant
delay in time*/
{
....
}
Проблемы эта установка имеет, однако, выглядит следующим образом:
1) если системное время было 59 минут и 59 секунд, в следующий раз система, которую я искал бы бы в течение 59 минут и 59 секунд , который я бы не смог получить, если я не включил wHours в расчет, и то же самое можно сказать в течение нескольких дней и недель и т. д.
2) Я бы предпочел использовать функцию, которая при использовании начинает отсчет вниз, а когда повторное использование этой функции сообщит мне, сколько миллисекунд было использовано после начала обратного отсчета. Однако я пока не нашел такой функции, как в msdn.
Если кто-то может указать мне направление лучшей функции для использования, чем GetSystemTime(), чтобы измерить, сколько времени прошло через определенный момент, это было бы потрясающе!
Отредактировано: Я использую Windows 7
Несмотря на то, что это интересный вопрос, он должен содержать либо windows/linux/любой другой тег ОС тоже. – basav
Текущее время действительно актуально?Достаточно ли было бы так же похожего на секундомер поведения? – Caramiriel
В Linux у вас есть монотонные таймеры, которые дадут вам точный интервал времени ... Но не уверены в Windows. – basav