1.CPU占用率曲线为正弦函数曲线:
第一步:想让CPU占用率曲线为某函数的曲线,首先是理解函数曲线与CPU占用率曲线的关系,函数y = f(x), 对应到CPU占用率曲线中来就是:x为流逝的时间,y为CPU占用率;我们知道CPU的占用率是0%-100%,也就是说函数的值域范围是[0-1],但是正弦函数的值域是[-1,1],所以正弦函数需要做个变换才能把值域变成[0,1],经过y = 1/2 + 1/2sinx变换,值域就变成[0,1]了。
第二步:对于CPU占用率 y = 1/2 + 1/2*sinx,也就是说在某个时间点x,CPU的使用时间就是忙时间占总时间的比率为y;
想通这两点了,CPU占用率曲线为正弦函数曲线的算法也就迎刃而解了。
代码如下:
#include "Windows.h"
#include "stdlib.h"
#include "math.h"
const double SPLIT = 0.01;
const int COUNT = 100;
const double PI = 3.14159265;
const int INTERVAL = 300;
int main()
{
DWORD busySpan[COUNT];
DWORD idleSpan[COUNT];
int half = INTERVAL/2;
double radian = 0.0;
for( int i=0; i<COUNT; i++ )
{
busySpan[i] = DWORD( half+half*sin(PI*radian) ); // y = 1/2 + 1/2*(sinx)
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;
}