一直在网上看到一些文章,说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