让CPU占用率画出正弦曲线

让CPU占用率画出正弦曲线

分类: 编程之美

都说计算机编程乏味,可是好多程序员却玩地津津有味。计算机的世界什么都可以用来做为程序员的游戏,比如CPU。下面就让我们来让Windows下的任务管理器听我们指挥,画出完美的正弦曲线吧。

 

思路:

0、目测windows下任务管理器刷新频率为1s,每一次刷新的CPU占用率其实就是这一时间段的 忙碌时间 / 全部时。

1、用循环和sleep方法来实现任一值的CPU占用率。

2、既然要画正弦曲线,之前先用两个数组busyTime[]和idleTime[]确定好循环与sleep时间。

 

注意:

1、假设系统当前只有当前程序运行

2、双核系统下运行一个死循环其中一个CPU占用率100%,另一个无影响

 

源码:

[cpp]  view plain copy
  1. #include "stdafx.h"  
  2. #include "windows.h"  
  3. #include "math.h"  
  4.   
  5. //C++ code to make task manager generate sine graph  
  6. const double SPLIT = 0.01;  
  7. const int COUNT = 200;  
  8. const double PI = 3.14159265;  
  9. const int INTERVAL = 300;  
  10.   
  11. int _tmain(int argc, _TCHAR* argv[])  
  12. {  
  13.     DWORD busySpan[COUNT]; //array of busy times  
  14.     DWORD idleSpan[COUNT]; //array of idle times  
  15.     int half = INTERVAL / 2;  
  16.     double radian = 0.0;  
  17.     for(int i=0;i<COUNT;i++){  
  18.         busySpan[i] = (DWORD)(half+(sin(PI*radian)*half));  
  19.         idleSpan[i] = INTERVAL - busySpan[i];  
  20.         radian += SPLIT;  
  21.     }  
  22.     DWORD startTime = 0;  
  23.     int j = 0;  
  24.     while(true){  
  25.         j = j%COUNT;  
  26.         startTime = GetTickCount();  
  27.         while((GetTickCount()-startTime)<=busySpan[j])  
  28.             ;  
  29.         Sleep(idleSpan[j]);  
  30.         j++;  
  31.     }  
  32.     return 0;  
  33. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值