这个最初是在microsoft的《编程之美》中看到的,用你的程序来控制CPU的使用率。
首先是要求写一个用来实现CPU使用率为50%程序。
这个还是很好实现的,只要让你的程序忙的时间课空闲时间对半就可以了。
这里主要要用到两个函数:GetTickCount以及Sleep。
GetTickCount函数据我所知在2000版的msdn中是查不到的,不过功能很简单,就是返回系统启动到现在所经历的毫秒数。
有了这个函数,就能够较为准确的获得一个程序运行时间,来控制程序的睡眠时间。
这个是实际效果图:
这个图片的效果就比较惨了,这个程序是我用来画CPU正弦曲线,看这个图片依稀能看出来点正弦的意思……
在家里的计算机画的曲线还是有模有样的,台式机,xp系统。如果你的电脑配置不错,后台程序不多的话,把下面的代码编译运行效果应该也会不错~
当然,如果你想要50%画一条直线,就很简单了,持续运行500ms,Sleep500ms就Ok啦。
另外需要注意的是,任务管理器的CPU曲线更新时间大约是1s,所以以1s为周期来进行CPU使用率的控制就可以了。
程序代码:
1 #include <iostream> 2 #include <windows.h> 3 #include <cmath> 4 5 #define PI 3.14 6 using namespace std; 7 8 int main() 9 { 10 int starttime; 11 int busytime; 12 int sinval = 0; 13 while(1) 14 { 15 starttime = GetTickCount(); 16 busytime = (int)(500 * sin(float((sinval) %= 30) / 30 * 2 * PI)) + 500; 17 cout << busytime << endl; 18 sinval++; 19 while(GetTickCount() - starttime < busytime) 20 ; 21 Sleep(1000 - busytime); 22 } 23 return 0; 24 }
代码很简明,运行下吧~