编写程序 控制cpu占用率2

本文介绍了如何使用GetTickCount()函数交替执行循环和休眠操作,以控制CPU占用率接近50%。在单核CPU上运行正常,但在双核CPU上出现一个核工作,另一个核休眠的情况,需要解决双核处理问题。
摘要由CSDN通过智能技术生成

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值