Практически в любой прорамме необходим контроль времени. Конечно вам может понадобится запустить таймер отдельным потоком и периодически «смотреть который час», но в этой статье я расскажу всего лишь о функции, которая отсчитывает заданное время в миллисекундах и завершает своё действие. Эта функция весьма и весьма похожая на sleep() функция…
Подключим заголовочные файлы:
#include <iostream>
#include <ctime> // для работы со временем
using namespace std;
… отличием нашей функции (путь это будет how2timer) является то, что она принимает значение времени в миллисекундах 😉
Для всех делов мы воспользуемся функцией clock(), которая возвращает время, измеряемое процессором в тактах от начала выполнения программы, или ?1, если оно не известно. Проверок делать не будем) не до того нам =)
Также оприделена константа CLOCKS_PER_SEC — это количество тактов системных часов в секунду.
Нам естественно необходимо пересчитать это время для работы с миллисекундами.
Когда константа готова сосчитаем время завершения отсчёта…
void how2timer(int ms) {
int CLOCKS_PER_MSEC = CLOCKS_PER_SEC / 1000; /// новая константа
/* выведем константы «для наглядности» */
cout << «CLOCKS_PER_SEC: » << CLOCKS_PER_SEC << endl;
cout << «CLOCKS_PER_MSEC: » << CLOCKS_PER_MSEC << endl;
clock_t end_time = clock() + ms * CLOCKS_PER_MSEC ; // время завершения
while (clock() < end_time) {} // цикл ожидания времени
cout << «Время вышло!!!\n»; // сообщение о конце работы функции
}
Ну и воспользуемся функцией:
int main (){
how2timer(5000); // 5 секунд
return 0;
}
Вот и всё…