前面一节讲了通过简单循环操作控制CPU 的占用率。文章链接:
http://blog.csdn.net/weixingstudio/article/details/6865775
然而, 通过调用系统的GetTickCount()函数可以获得系统启动到现在的时间值,通过这个时间值也可以控制系统的繁忙的时间片和空闲的时间片。让系统一个时间片不停地做循环,一个时间片做休眠,这样一秒钟以后品均下来也可以让 CPU的占用率接近50%。
代码:
// cpu_2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
int _tmain(int argc, _TCHAR* argv[])
{
const DWORD busyTime=10;
const DWORD idleTime=busyTime;
DWORD startTime=GetTickCount();
while(true)
{
startTime=GetTickCount();
while(GetTickCount()-startTime<=busyTime)
{
//IDLE
}
Sleep(idleTime);
}
return 0;
}
设置空闲时间片和繁忙时间片的大小,然后交替执行两个操作。通过GetTickCount()函数 获得当前启动的时间,然后不停地获取系统启动时间,计算和这个时间片的差值,当差值达到时间片以后,进入另外一个时间片操作。
执行效果如图:
这里不知道为什么因为CPU是双核的,结果变成了一个核工作,一个核进行休眠了。可能还需要对双核的CPU进行特殊的程序处理。在单核的CPU上应该没有问题。
还望大家多多指教这个双核的处理问题。