C语言控制cpu使用率
来源:互联网 发布:seo关键词优化软件 编辑:程序博客网 时间:2024/05/17 17:54
<<编程之美>>。第一节,里面讲的是控制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内存下测试的。书上还说在双核上的效果是一样的,不过这个机器就无能为力了!
原文地址:http://westice.iteye.com/blog/506335
- C语言控制cpu使用率
- C语言控制cpu使用率
- C语言控制cpu使用率(《编程之美》)
- C语言获取Windows总CPU使用率.
- Linux cpu使用率控制
- 控制CPU使用率
- Windows控制CPU使用率曲线
- 控制CPU使用率为正弦曲线
- Windows控制CPU使用率曲线
- Java控制CPU的使用率
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等-转载
- Windows下用C语言获取系统的CPU利用率、内存使用率、硬盘使用率等
- 写程序+控制cpu占用率-4+绘制CPU使用率的正弦曲线2+C#+实现
- C语言面试之CPU控制
- 游戏中CPU使用率的控制
- Windows下用C语言获取进程cpu使用率,内存使用,IO情况
- NSMutableArray--可变数组
- listView 动态设置高度
- 3D MMORPG游戏设计之技能系统
- 两道需要排序的dp背包下问题 -- hdu 2546 饭卡/ hdu 3466 Proud Merchants
- 视频发展趋势收集1--HBO起内讧 被迫外包流媒体服务
- C语言控制cpu使用率
- OC中的反射机制
- Hibernate @Transient
- NSDictionary--字典
- hibernate的<class name=" " table=" " schema=" "> 中schema的问题
- finalize应用
- EularProject 7: 计算10001个素数
- HDU 1162 Prim
- HDU4312 Meeting point-2 (切比雪夫距离&&曼哈顿距离)