Вызов функции WinAPI Sleep () длится дольше, чем ожидалось
ОС: Windows 7
При вызове функции WinAPI Sleep () как Sleep (1) поток фактически спит в течение 15 мс. Я делал это 100 раз в цикле, и общее время сна составляло 1500 мс вместо 100.
Это обычное поведение или я должен быть согласен с тем, что что-то не так с моей установкой MOBO, CPU, Windows?
РЕДАКТИРОВАТЬ: Если возможно, вы могли бы запустить этот код и напишите, как долго было время сна. Я позволил своему другу управлять этим, и он фактически имел все это в 1 мс.
#include <iostream>
#include <ctime>
#include <Windows.h>
void test(void)
{
std::cout << "Testing 1ms sleep." << std::endl;
for (unsigned int i = 0; i < 10; i++)
{
std::clock_t startClocks = std::clock();
Sleep(1);
std::clock_t clocksTaken = std::clock() - startClocks;
std::cout << "Time: " << clocksTaken << "ms." << std::endl;
}
}
int main(void)
{
test();
std::cin.sync();
std::cin.get();
return 0;
}
РЕДАКТИРОВАНИЕ 2: Кажется, что причина, почему некоторые люди получают 1 мс, состоит в том, что другая программа работает, которая устанавливает общесистемное разрешение таймера 1 мс. По умолчанию это должно быть 15,6 мс в Windows 7.