编写程序 控制cpu占用率2

前面一节讲了通过简单循环操作控制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上应该没有问题。

还望大家多多指教这个双核的处理问题。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixingstudio/article/details/6867373
文章标签: 工作
个人分类: Algorithms
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭