编程之美第一题的疑问
- 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