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