请问有那些精确的不占用CPU的延时方法,最好使用硬件时钟延时
和Sleep一样的效果,能使线程暂停指定一段时间,不占用CPU,精度1ms之内,重要的是,受CPU占用率的影响要小。
我用
int _tmain(int argc, _TCHAR* argv[])
{
DWORD start = GetTickCount();
int count = 0;
while (true)
{
if (GetTickCount() - start > 10000)
break;
Sleep(1);
count++;
}
std::cout << "Count : " << count << std::endl;
std::cin.get();
return 0;
}
发现,在CPU空闲时执行,count为5000左右,也就是说Sleep(1)几乎执行了2ms;而在CPU100%时运行,count为3000左右,也就是Sleep(1)延时了3ms,很不稳定。