操作系统对sleep(1)影响

有时候,为了防止 CPU占用100%,就使用Sleep(1)来使CPU稍做休息以达到操作系统任务调度的流畅性

但是,对于Sleep(1)所产生的效果,在不同的系统上会有不同的表现

 

上周发现原来正常运行的程序,在最新的一台笔记本上无法正常运行,总是很慢,后来跟踪,发现是文件读取太慢导致的,再跟踪进去,发现是在读取文件之后对文件分析的while()循环中Sleep(1)导致的

 

经过测试发现,在该有问题的笔记本上,Sleep(1)相当于Sleep(16),有15%的机率相当于Sleep(15),测试代码如下:

 DWORD dw1 = GetTickCount();
 Sleep( 1 );
 DWORD dw2 = GetTickCount();
 long le = dw2 - dw1;

结果发现,le大部分时候都是16,有大约15%左右的机率是15

该笔记本的系统是windows table PC xp + sp3,(前面的名称记得不大清楚了,基本上就是这个版本),硬件配置很高:3G内存,intel T7700 CPU

 

后来在其它的系统上测试,Sleep(1),即测试代码中的le总是0,而在文件分析的while()循环中每一圈都要Sleep(1),所以就非常明显地造成了这个Sleep()的时间过长,以致于其影响了正常的运行

至于是操作操作对Sleep(1)的影响还是硬件对Sleep(1)的影响我不知道,没有每件进行更详细的测试,但得出一个结论:对这种“小问题”也不能掉以轻心,像这种问题如果只发生在客户那里,那就非常难解决

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值