当前位置:编程学习 > C#/ASP.NET >>

编写程序 控制cpu占用率2

前面一节讲了通过简单循环操作控制CPU 的占用率。文章链接:www.zzzyk.com/kf/201110/107456.html

然而, 通过调用系统的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上应该没有问题。

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

作者:Watkins.Song

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,