ОС: 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;
}
EDIT2: кажется, что причина, по которой некоторые люди получают 1 мс, заключается в том, что запущена другая программа, которая устанавливает общесистемное разрешение таймера в 1 мс. По умолчанию это должно быть 15,6 мс в Windows 7.