用任务管理器画CPU正弦曲线

这个最初是在microsoft的《编程之美》中看到的,用你的程序来控制CPU的使用率。

首先是要求写一个用来实现CPU使用率为50%程序。

这个还是很好实现的,只要让你的程序忙的时间课空闲时间对半就可以了。

这里主要要用到两个函数:GetTickCount以及Sleep。

GetTickCount函数据我所知在2000版的msdn中是查不到的,不过功能很简单,就是返回系统启动到现在所经历的毫秒数。

有了这个函数,就能够较为准确的获得一个程序运行时间,来控制程序的睡眠时间。

这个是实际效果图:

用任务管理器画CPU正弦曲线

这个图片的效果就比较惨了,这个程序是我用来画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 }

代码很简明,运行下吧~

你可能感兴趣的:(cpu)