关于Sleep的精度测试

本文通过编写测试程序,探究Windows系统中Sleep函数的精度问题。实验表明,在不同类型的CPU上,Sleep的误差范围在1到2毫秒之间,证明其具有较高的精度。测试采用多线程方式,主线程Sleep一分钟,子线程以1到7毫秒为间隔计数,最终展示测试结果。
摘要由CSDN通过智能技术生成



一直在网上看到一些文章,说windows上面的Sleep精度如何不精确等等,在部门内部也引起了这方面的争论,为了证明事实,特意写下面的例子做测试。

测试的要点在,主线程Sleep一分钟,而子线程函数则以1~7毫秒作为Sleep单位,子线程里面,每Sleep一次则计数一次。同时,使用多个线程测试,如此两方面做对比,看效果。

测试结果证明,Sleep还是比较精确的,在有些电脑上,可以达到1毫秒之内的误差,而在有些电脑上,可以达到2毫秒以内的误差。

1毫秒之内误差的机器CPU是台式机:Intel(R)Core(TM)i3-3220 CPU @ 3.30GHz 3.30 GHz

2毫秒之内误差的机器CPU是笔记本:Intel(R)Core(TM)i5-2450 CPU @ 2.50GHz 2.49 GHz

 

#include <windows.h>

 

bool g_bStoped = false;

typedef struct ttt

{

 int nSleepTime;

 char tag[12];

}tt;

DWORD WINAPI ThreadRtspServer(LPVOID arg)

{

 tt *p = (tt*)arg;

 int nCount= 0;

 while(!g_bStoped)

 {

  Sleep(p->nSleepTime);

  n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值