刚看了《编程之美》的第一章,里面有个例子是讲怎么样控制CPU使用率的。这使得我想起了我以前做过的一个屏幕录制程序。
屏幕录制程序的做法就是每隔一段时间就把屏幕上图像保存一次。这是最直观的方法,当然也是最不好的方法,因为这会造成CPU被强行地占用(你会发现运行这样的程序时,你的机器会立马慢下来,那是因为程序一直在那里循环着“监控”CPU时间,一到时间就执行保存屏幕图像的操作。这样,CPU的使用率机会就达到了100%。)
《编程之美》里的例题也是可以根据相同的思路去解决的。每隔一段时间就监控一次CPU时间,这样在监控的过程中就等于CPU被占用,即处于忙碌状态。当到达了指定的“休息”时间后,就释放CPU。这样,通过调整“忙碌”和“休息”的时间比例就能使控制CPU的使用率了。
下面是实例代码:
//这里是使得CPU使用率处于百分之50,当然前提是只有这个程序在系统中使用
#include "windows.h"
int main()
{
const int busyTime = 10; // 监控时间,即忙碌时间
const int idleTime = busyTime; //休息时间,即空闲时间
int startTime = 0;
while(true)
{
startTime = GetTickCount(); //使用GetTickCount()返回系统启用到现在的时间间隔
while((GetTickCount() - startTime) <= busyTime) / /监控过程
;
Sleep(idleTime);//休息过程
}
return 0;
}