首页
社区
课程
招聘
[求助]Sleep函数
发表于: 2010-4-25 18:11 4394

[求助]Sleep函数

2010-4-25 18:11
4394
下面的代码预期应该输出递增的数字,但是实际结果却不是。为什么呢?

for (int i = 0; i<100; i++)
        {
                ::Sleep(1);
                cout<<::GetTickCount()<<endl;
        }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Sleep 函数运行也是要时间的
2010-4-25 18:26
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
下面是输出结果前面一部分:
14056750
14056750
14056750
14056765
14056765
14056765
14056765
14056765
14056765
14056765
14056765
14056781
14056781
14056781
14056781
14056781
14056781
14056781
14056781
14056796
14056796
14056796
14056796
14056796
14056796
14056796
14056796
.......
2010-4-25 18:40
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
Sleep(1)太短了没有意义,Windows又不是实时系统,别指望它能那么精确,这个值起码在200以上才有效果吧~想想CPU时间片切换~~
2010-4-25 19:19
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
查了下资料,结论是GetTickCount精度是15ms.
timeGetTime的精度可达到1ms.

for (int i = 0; i<100; i++)
        {
                ::Sleep(0);
                cout<<"GTC:"<<::GetTickCount();
                cout<<" TGT:"<<::timeGetTime()<<endl;
        }
http://blog.csdn.net/Vonger/archive/2009/09/10/4538862.aspx
2010-4-25 20:27
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
QueryPerformanceFrequency
2010-4-26 09:10
0
雪    币: 184
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
tickcount是记录在用户和内核共享的一块称为UserSharedData区域,ring3直接读取,内核对该值不是实时更新的。
2010-4-26 10:09
0
游客
登录 | 注册 方可回帖
返回
//