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

时间:2021-04-25 03:39:56

这个最初是在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 }

代码很简明,运行下吧~