Таймер в консольном приложении?
Существует ли класс timer для использования в консольном приложении c++?
Мне нужен таймер для задержки вывода данных пользователю.
Sleep () - это простое решение. Однако это еще не все. Вы также можете сделать таймер из объекта ядра. Вы должны были бы использовать WaitForSingleObject (...), который принимает предполагаемые миллисекунды в качестве второго параметра. Следующий код печатается каждую секунду и отсчитывается в течение 10 секунд.
#include <windows.h> void main() { int nCount = 0; HANDLE hTimer = CreateEvent(NULL, FALSE, FALSE, NULL); while(nCount < 10) { WaitForSingleObject(hTimer, 1000); cout << "1 s\n"; nCount++; } cout << "10 secs\n"; CloseHandle(hTimer); }
#include <windows.h> HANDLE hTimer = NULL; unsigned long _stdcall Timer(void*) { int nCount = 0; while(nCount < 10) { WaitForSingleObject(hTimer, 5000); cout << "5 s\n"; nCount++; } cout << "50 secs\n"; return 0; } void main() { DWORD tid; hTimer = CreateEvent(NULL, FALSE, FALSE, NULL); CreateThread(NULL, 0, Timer, NULL, 0, &tid); int t; while(cin >> t) { if(0==t) SetEvent(hTimer); } CloseHandle(hTimer); }
#include "stdafx.h" #include <Windows.h> #include <iostream> using namespace std; BOOL quit = FALSE; void timertick(int count) { char buff[64]; _itoa_s(count, buff, 64,10); cout << buff<<"\n"; } DWORD WINAPI thread1(__in LPVOID lpParameter) { int nCount = 0; HANDLE hTimer = CreateEvent(NULL, FALSE, FALSE, NULL); while (!quit) { WaitForSingleObject(hTimer, 1000); //cout << "1 s\n"; nCount++; timertick(nCount); } return 0; } int main() { DWORD threadID1; HANDLE h1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread1, 0, 0, &threadID1); //HANDLE h2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread2, 0, 0, &threadID2); getchar(); quit = TRUE; return 0; }
Вы могли бы использовать Sleep()
функция внутри цикла, чтобы задержать ваш процесс.