Я пытаюсь получить задержку в 1 миллисекунду, но у меня получается в 15 раз больше. Я также пробовал с функцией windows Sleep(1)
, которая также давала мне тот же результат. получить точную миллисекундную задержку?
Где как это работает с задержкой в 1 секунду.
#include <iostream>
#include <Windows.h>
#include <thread>
#include <chrono>
void counter1();
auto main() -> int
{
std::thread p(&counter1);
p.join();
return 0;
}
void counter1()
{
int nStep = 0;
const int STEP = 1000;
auto start = std::chrono::high_resolution_clock::now();
for (;;)
{
++nStep; // incrementing every millisecond
std::this_thread::sleep_for(std::chrono::milliseconds(1));
if (nStep == STEP) { // compares at second
auto duration = std::chrono::high_resolution_clock::now() - start;
std::cout << "counter took " <<
std::chrono::duration_cast<std::chrono::seconds>(duration).count()
<< "seconds \n";
start = std::chrono::high_resolution_clock::now();
nStep = 0;
}
}
}
Вывод этой программы: https://i.stack.imgur.com/AVZDV.png