分类: 编程之美
都说计算机编程乏味,可是好多程序员却玩地津津有味。计算机的世界什么都可以用来做为程序员的游戏,比如CPU。下面就让我们来让Windows下的任务管理器听我们指挥,画出完美的正弦曲线吧。
思路:
0、目测windows下任务管理器刷新频率为1s,每一次刷新的CPU占用率其实就是这一时间段的 忙碌时间 / 全部时。
1、用循环和sleep方法来实现任一值的CPU占用率。
2、既然要画正弦曲线,之前先用两个数组busyTime[]和idleTime[]确定好循环与sleep时间。
注意:
1、假设系统当前只有当前程序运行
2、双核系统下运行一个死循环其中一个CPU占用率100%,另一个无影响
源码:
- #include "stdafx.h"
- #include "windows.h"
- #include "math.h"
- //C++ code to make task manager generate sine graph
- const double SPLIT = 0.01;
- const int COUNT = 200;
- const double PI = 3.14159265;
- const int INTERVAL = 300;
- int _tmain(int argc, _TCHAR* argv[])
- {
- DWORD busySpan[COUNT]; //array of busy times
- DWORD idleSpan[COUNT]; //array of idle times
- int half = INTERVAL / 2;
- double radian = 0.0;
- for(int i=0;i<COUNT;i++){
- busySpan[i] = (DWORD)(half+(sin(PI*radian)*half));
- idleSpan[i] = INTERVAL - busySpan[i];
- radian += SPLIT;
- }
- DWORD startTime = 0;
- int j = 0;
- while(true){
- j = j%COUNT;
- startTime = GetTickCount();
- while((GetTickCount()-startTime)<=busySpan[j])
- ;
- Sleep(idleSpan[j]);
- j++;
- }
- return 0;
- }