设计一个程序,让用户控制windows任务管理器的进程,并实现CPU占用率状态为一条正弦曲线;
分析:
主要是通过控制cpu的闲和忙比例,达到控制占有率。
busy和free两个循环,控制运行的时间。
CPU的占用率 = CPU忙的时间(执行程序)/刷新周期总时间。
#include "iostream"
#include "windows.h"
#include "cmath"
using namespace std;
int control_Cpu();
const int k = 200;
const double sperate = 0.02;
const double pi = 3.14159265;
int busy_time[200];
int free_time[200];
int interval_time = 100;//时间间隔
int half_Time = interval_time / 2;
int control_Cpu()
{
INT64 start_time = 0;//利用符号64位正数数据类型控制开始时间
int i = 0;
for( ; true ; )
{
i = i % k;
start_time = GetTickCount();
for( int j=0;(GetTickCount()-start_time) <= busy_time[i] ; j++) //GeTickCount控制运行时间
{
;
}
Sleep(free_time[i]);//控制当前线程
i++;
}
return 0;
}
int main()
{
double beta = 0;
int i = 0;
for(;i < k;)
{
beta = i * pi * sperate;
cout << beta << "\n";//输出值
double a = sin(beta);
busy_time[i] = a * half_Time + half_Time;//工作时间
free_time[i] = interval_time - busy_time[i];//闲余时间
i++;
}
control_Cpu();
return 0;
}
不同电脑上运行可能效果不一致。