`
westice
  • 浏览: 115643 次
  • 性别: 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  

相关推荐

    c语言查看cpu使用率

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

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

    在Windows操作系统中,使用C语言获取进程的CPU使用率、内存使用情况以及I/O状态是一项基本的任务,这对于系统监控、性能分析以及优化程序性能都至关重要。以下是对这些知识点的详细解释: 1. **CPU使用率**: CPU...

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

    以上就是使用Psapi库在Windows下用C语言获取进程CPU使用率和内存使用情况的详细步骤。通过深入理解和实践这些知识点,开发者可以更好地监控和管理自己的应用程序,优化性能,以及解决与资源使用相关的各种问题。

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

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

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

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

    使用C++获取指定线程的CPU使用率

    在C++编程中,获取指定线程的CPU使用率是一项重要的任务,这有助于优化程序性能,监测系统资源消耗。本文将详细介绍如何通过C++来实现这一功能。 首先,我们需要理解CPU使用率的基本概念。CPU使用率是衡量处理器在...

    控制cpu的占用率

    例如,`top`、`htop`(Linux)和Task Manager(Windows)等命令行工具可以实时查看各进程的CPU使用情况。此外,还有如`perf`(Linux)这样的性能分析工具,可以详细追踪CPU周期,找出性能瓶颈。 对于【标签】中的...

    基于RVBoards D1单板机的C语言CPU使用率指示器设计源码

    该项目是一款基于RVBoards D1单板机的CPU使用率指示器源码,采用C语言核心开发,并辅以MATLAB、Rust、Java、Go、C++、JavaScript、Python等多语言实现,共计45个文件。它通过读取/proc/stat文件获取CPU使用率数据,...

    Iphone获取应用所占cpu的使用率以及iphone手机cpu的使用率

    这通常涉及到C语言的函数调用,例如`mach_host_self()`,`host_info()`等,这些函数可以获取到关于主机(即设备)的信息,其中包括CPU使用率。 在Swift中,你可能需要创建一个C语言的桥接头文件,定义这些函数,...

    编程实现cpu,内存大小使用率,以及关闭进程的好代码

    CPU使用率可以通过获取当前进程的时间片使用量与总时间片的比例计算得出。内存使用率则可以通过读取系统性能数据,如`GlobalMemoryStatusEx`或`GetPerformanceInfo`函数来获取。 例如,在`EricTaskMgr.cpp`或`...

    cpu使用率c源代码

    标题“cpu使用率c源代码”指的是一个C语言编写的程序,用于监控和显示计算机的CPU使用率。在计算机科学中,CPU使用率是衡量处理器工作负载的重要指标,它表示在特定时间间隔内CPU处于忙碌状态的时间比例。通过了解...

    linux-cpu.zip_CPU使用率

    在Linux操作系统中,CPU使用率是衡量系统性能的重要指标之一,它反映了系统处理任务的繁忙程度。本资源“linux-cpu.zip”包含了一个名为“cpu.c”的源代码文件,该文件提供了实现监控Linux系统CPU使用率的功能。接...

    linux_test.zip_CPU使用率_cpu test_定时器

    本项目名为"linux_test.zip",其中包含了利用C语言编写的一个程序,用于实现CPU使用率的检测,特别是关注整体(total)的CPU使用率,而非单独的用户或系统使用率。该程序运用了定时器功能,每30秒执行一次信息采集,...

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

    在Linux操作系统中,编写C程序来获取CPU使用率和内存使用情况是通过读取特定的系统文件完成的,这些文件位于`/proc`目录下。`/proc`是一个虚拟文件系统,它提供了关于系统状态的实时信息。以下是如何通过C程序实现这...

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

    C++获取特定进程CPU使用率的实现代码 本文将介绍如何使用 C++ 实现获取特定进程的 CPU 使用率,并提供相关的实现代码。 一、获取进程 CPU 使用率的原理 要获取进程的 CPU 使用率,我们需要使用 Windows API 中的 ...

    8051单片机C语言控制与应用

    本主题主要探讨的是如何使用C语言来控制和应用8051单片机。 C语言是一种高级程序设计语言,具有可移植性强、表达力丰富等优点。在8051单片机上使用C语言编程,可以提高开发效率,降低学习曲线,同时使得代码更易于...

    8051单片机C语言控制与应用-MC51版

    4. **定时器/计数器**:利用C语言配置和控制8051的两个16位定时器/计数器,实现定时、延时、波特率设置等功能。 5. **中断系统**:理解中断的概念,学习如何用C语言编程来设置和响应8051的外部中断和内部中断,如...

    计算linux和openwrt的cpu使用率 (2).docx

    下面将详细介绍如何利用C语言编写一个小程序来计算Linux和OpenWRT系统的CPU使用率。 首先,`/proc/stat` 文件是Linux内核提供的一种接口,它包含了大量的运行时统计信息,包括CPU使用情况。在文件中,第一行通常以 ...

    C# 任务管理器及控制台获取CPU占用率前3位进程

    这个控制台应用程序可以帮助开发者或运维人员快速地获取系统中CPU使用情况,而无需依赖图形界面工具,这对于远程服务器或自动化监控场景尤其有用。通过不断优化和改进,这个小工具可以进一步扩展,例如,添加实时...

Global site tag (gtag.js) - Google Analytics