`
westice
  • 浏览: 114375 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C语言控制cpu使用率

阅读更多

 

今天看到一本讲算法的好书,<<叫编程之美>>。看了一节,里面讲的是控制cpu

的占有率,

cpu的占有率是由进程的忙和空闲来决定的,即  

rate=(busy_time)/(busy_time+idle_time);

怎么来控制她呢? busy可以用循环(这个循环用空循环,以便好控制),idle可以用sleep

比如先让任务管理器的cpu使用率始终保持在50%左右,那么在一个主循环中,

让空循环和sleep运行同样的一小段时间。sleep的时间好搞,空循环的怎么办呢?可以用cpu的主频估算出运行一个空循环所需要的时间,然后去设定空循环所要运行的次数,

 

比如:

 

    while(true)

    {   

 

        //for 循环运行x次,使它的时间和sleep的时间相等

        for(int i=0;i<x;i++);

        sleep(time);

    }

这种要估算cpu的运行速度,不太方便,准确性也不高。

《编程之美》里面介绍一种好的方法。在运行的时候设定空循环的运行时间

int start_time=click();

while((click()-start_time)<runtime);

这样就能使空循环运行runtime 毫秒

有了这个只要设定一下循环和sleep的比例就可以随意控制任务管理器中的cpu的使用率了,

下面用任务管理器画个弦函数图像

 

#include <iostream>
#include <math.h>
#include <stdlib.h> 
#include <windows.h>
using namespace std;

int main()
{
     const float PI=3.1416;
     int count=180;     //时间数组的个数 
     int idle[count];
     int busy[count];
     float delta=2*PI/count;
     float alpha=0;
     /*
       给循环和sleep各生成一列时间数组 
       busy按照正弦规律变化,busy和对应的sleep的和不变 
     */
     for(int i=0;i<count;i++)
     {
        busy[i]=count*(sin(alpha)+1)/2;
        idle[i]=count-busy[i];
        alpha=alpha+delta;
        cout<<busy[i]<<"---"<<idle[i]<<endl;     
     }
     
     int j=0;
     int st_time;
     while(true)
     {   
         j=j%count;
         st_time=clock();     //起始时间 
         while((clock()-st_time)<busy[j]);
         Sleep(idle[j]);
         j++;
     }       
     system("PAUSE");
     return 0;
} 

 


 

不过图片还是没有那么完美。有时突然蹦起来,可能是机器的原因,这是在pentium二 400M 主频,130M内存下测试的。书上还说在双核上的效果是一样的,不过这个机器就无能为力了!

  • 大小: 15.5 KB
分享到:
评论
1 楼 javafound 2009-11-01  

相关推荐

    Windows下用C语言获取进程cpu使用率

    Windows下用C语言获取进程CPU使用率,内存使用,IO情况。 可以准确的获取当前进程的CPU使用率。

    c语言查看cpu使用率

    平台:linux。 语言:c。 功能:查看当前系统cpu使用率(可多核),1秒刷新一次。

    Psapi 库 Windows下用C语言获取进程cpu使用率

    Windows下用C语言获取进程CPU使用率,内存使用,IO情况。 可以准确的获取当前进程的CPU使用率。

    vb c c# cpu使用率实时检测 获取CPU使用率

    使用VB C语言 获取电脑CPU使用率,小巧实用,小内存使用,堪比鲁大师(说笑而已),完全代码公开,全解注释,直接F5运行,完全自己手动编写,适合有兴趣的猿员人们研究,桌面显示实时监控!!CPU使用率源代码,CPU使用...

    linux c程序获取cpu使用率及内存使用情况

    linux c程序获取cpu使用率及内存使用情况

    C++获取特定进程CPU使用率的实现代码

    写一个小程序在后台记录每个进程的CPU使用情况,揪出锁屏后占用CPU的进程,于是自己写了一个C++类CPUusage,方便地监视不同进程的CPU占用情况。本人编程还只是个新手,如有问题请多多指教

    linux_test.zip_CPU使用率_cpu test_定时器

    Linux下C语言代码,采集数据其中用到了定时器30S进行一次信息采集,最开始获取cpu对于total使用率,而不是用户和系统相对的使用率

    C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用

    C/C++实现linux和Windows查看系统、进程、服务的内存和CPU使用情况的源代码,生成的是静态链接库,Windows和Linux下经测试都可用,查看系统、指定名称的服务、指定名称的进程占用CPU和内存,查看方式不是通过程序中...

    linux cup 内存 网速监控 C语言实现

    在下linux 监控cup的使用率,实时频率(跟cpu频率不同) 内存使用率 网速监控 C语言实现

    java使用sigar检测CPU占用率

    Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar 依赖sigar-amd64-winnt.dll或sigar-x86-...

    基于C语言编写forp PHP分析器

    dtrace 分析器是一个轻量级的 PHP 扩展提供脚本的调用...CPU 使用率 函数调用的文件和行号 输出为谷歌的跟踪事件格式 字幕功能 分组函数 函数别名(对匿名函数有用) forp 是非侵入性的,它提供了 PHP 注释来完成工作.

    socket多人聊天程序C语言版(二)

    这样效率真的提升不少,至少CPU使用率稳稳的在20以下,不会飙到100了。用C语言写这个还是挺费时间的,因为什么功能函数都要自己写,不像C++有STL库可以用,MFC写就更简单了,接下来我还会更新MFC版本的多人聊天程序...

    linux使用管道命令执行ps获取cpu与内存占用率

    代码如下:#include &lt;stdio&gt;#include &lt;unistd&gt;int main(){ char caStdOutLine[1024]; // ps 命令的标准输出中的一行信息 char* pcTmp = NULL; // 指向以空格拆分后的字符串  char caSelfPID[10];...

    MSp430 C语言开发

    MSP430 中大部分芯片都包含有硬件的...行通信的工作模式,通过 UTCTL0设置产生波特率所使用的时钟。值得注意的是,设置串行 通信模块时, 应该使寄存器 UCTL0 中的 SWRST 位置位, 以便使串行通信模块处于复位状态,

    学生作业 C#实例源码 CPU内存使用率.rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    tint3:用C语言编写的x11状态栏,目的是减少内存和CPU使用率

    色彩3 特征 X11窗口服务器的轻量级栏 (几乎)完全符合X11 易于配置,并准备好进行AUR。md 会费 欢迎捐款! 如果您希望看到实现的功能,那就去做吧!... 使用PulseAudio库而不是alsa 清理xlib调用 用于添加模块的abi

    51单片机C语言编程基础及实例

    发光二极的控制:单片机 I/O 输出 将一发光二极管 LED 的正极(阳极)接 P1.1,LED 的负极(阴极)接地 GND。只要 P1.1 输出高电平 VCC,LED 就正向导通(导通时 LED 上的压降大于 1V),有电流流过 LED,至发 LED ...

    linux下编程实现任务管理器

    在feodra下编写任务管理器。。。 能够实现关机,重启,cpu使用率动态显示 等等

    multisim中有stm32单片机.docx

    multisim点击"next"选择工程类型和程序语言,默认类型为standard,默认语言为C语言,都使用默认就可以了,除非你要用汇编,输入工程名称,添加资源文件或创建一个空工程,finsh完成。双击打开元件可以编辑时钟平率,...

    服务器指标要求(2021整理).docx

    1〕能以图形化实时显示系统的CPU、内存、磁盘与网络资源等的资源使用情况,实现如下监控功能: CPU:多处理器系统中每个处理器的CPU使用率、CPU运行的队列长度、系统呼叫次数以及中断及环境交换机的操作频率;...

Global site tag (gtag.js) - Google Analytics