前面一节讲了通过简单循环操作控制CPU 的占用率。文章链接:
http://blog.youkuaiyun.com/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上应该没有问题。
还望大家多多指教这个双核的处理问题。

本文介绍了如何使用GetTickCount()函数交替执行循环和休眠操作,以控制CPU占用率接近50%。在单核CPU上运行正常,但在双核CPU上出现一个核工作,另一个核休眠的情况,需要解决双核处理问题。
最低0.47元/天 解锁文章
1200

被折叠的 条评论
为什么被折叠?



