ThinkX 2005年07月26日
请问有那些精确的不占用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,很不稳定。
...全文
157 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6374

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告