要想得到满意的结果,先关闭其他消耗CPU的进程
第一:CPU占用曲线维持在50%
本人的CPU是3.3GHZ
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int busytime=10;
int main()
{
//方法1
/*for(; ;)
{
for(int i=0;i<14800000;i++)
;
Sleep(10);
}
return 0;*/
//方法2
while(true)
{
INT64 startTime = GetTickCount();
while((GetTickCount()-startTime)<=busytime)
;
Sleep(10);
}
//方法3
}
控制CPU曲线占用率为正弦曲线:
#include<windows.h>
#include<stdlib.h>
#include<math.h>
#include <tchar.h>
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] ;
DWORD idelspan[COUNT];
int half = INTERVAL/2;
double radain =0.0;
for(int i=0;i<COUNT;i++)
{
busyspan[i]=(DWORD)(half + (sin(PI * radain) * half));
idelspan[i] = INTERVAL - busyspan[i];
radain += SPLIT;
}
DWORD StartTime = 0;
int j = 0;
while(true)
{
j = j % COUNT;
StartTime = GetTickCount();
while((GetTickCount() - StartTime) <= busyspan[j]);
Sleep(idelspan[j]);
j++;
}
return 0;
}