首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

编程之美第一题的疑问,该如何解决

2012-06-07 
编程之美第一题的疑问C/C++ codeconst DWORD busytime10const DWORD idletimebusytimeDWORD starttime

编程之美第一题的疑问

C/C++ code
  const DWORD busytime=10;    const DWORD idletime=busytime;    DWORD starttime=0;    while(true)    {        DWORD starttime=GetTickCount();        //busyloop        while(GetTickCount()-starttime<=busytime)        ;        //idleloop        Sleep(idletime);    }

这是书上标准的解法。。
然后我按这个思路稍微修改了一下
C/C++ code
const DWORD idletime=10; //在这里用DWORD是为了防止16位不够用@@    while(true)    {        clock_t start=clock();        while(clock()-start<0.1*CLOCKS_PER_SEC) ;  //为什么用0.01不行呢        Sleep(idletime);    }

也就是busy这一句 while(clock()-start<0.1*CLOCKS_PER_SEC) ; //为什么用0.01不行呢,按理说应该 是0.01的时候CPU的曲线保持在50%啊。。。

[解决办法]
没明白GOOGLE CLOCKS_PER_SEC
时钟滴答是否有问题
[解决办法]
以上两段代码,跑下来都是接近100%(多核的,在任务管理器里关系设置里就勾选一个CPU)。

间隔得加大点,100ms

热点排行