cpu的占有率是由进程的忙和空闲来决定的,即
rate=(busy_time)/(busy_time+idle_time);
busy可以用循环(这个循环用空循环,以便好控制),idle可以用sleep
如果让任务管理器的cpu使用率始终保持在50%左右,那么在一个主循环中,让空循环和sleep运行同样的一小段时间。可以用cpu的主频估算出运行一个空循环所需要的时间,然后去设定空循环所要运行的次数,
空循环的runtime 毫秒运行时间可以按照如下方式:
int start_time=click();
while((click()-start_time)<runtime);
弦函数占有率代码如下:
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
int main()
{
const float PI=3.1416;
int count=180;
int idle[count];
int busy[count];
float delta=2*PI/count;
float alpha=0;
/*
给循环和sleep各生成一列时间数组
busy按照正弦规律变化,busy和对应的sleep的和不变
*/
for(int i=0;i<count;i++)
{
busy[i]=count*(sin(alpha)+1)/2;
idle[i]=count-busy[i];
alpha=alpha+delta;
cout<<busy[i]<<"---"<<idle[i]<<endl;
}
int j=0;
int st_time;
while(true)
{
j=j%count;
st_time=clock(); //起始时间
while((clock()-st_time)<busy[j]);
Sleep(idle[j]);
j++;
}
system("PAUSE");
return 0;
}