如题所述
我们知道任务管理器每一秒钟刷新一次,这就要在这一秒钟内,使CPU的平均使用时间和空闲时间各占50%. 而不是让CPU使用1秒钟,空闲一秒钟。windows的调度时间片为10ms, 那么在编程时可以让cpu不停的工作10ms, 然后空闲10ms, 空闲操作通过sleep(10)来实现。这样最后任务管理器在刷新CPU占用率的时候就会得到这个一秒钟内的CPU的平均使用率。显示出50%的水平。
通过空循环,来让cpu保持繁忙的工作状态,通过sleep使cpu空闲。机器指令最接近的是汇编语言。而空的for 循环,换成汇编语言是大概5句,现在的CPU可以在一个时钟周期执行两个机器指令,相当于执行两个汇编语句。
现在假设电脑的主频是3.2G,则每秒可以执行 3200000000*2/5=1280000000条空循环语句。 应该分时间片的执行一个时间片10ms, 所以执行空循环应该为12800000次。
因此用C语言可以这样编写程序:
#include
#include
int main(int argc, char *argv[])
{
long n=12800000; //n表示执行的空循环次数
int i=0;
while(1)
{
for(i=0;i
{
//空循环
}
sleep(10);
}
system("PAUSE");
return 0;
}
通过空循环,来让cpu保持繁忙的工作状态,通过sleep使cpu空闲。机器指令最接近的是汇编语言。而空的for 循环,换成汇编语言是大概5句,现在的CPU可以在一个时钟周期执行两个机器指令,相当于执行两个汇编语句。
现在假设电脑的主频是3.2G,则每秒可以执行 3200000000*2/5=1280000000条空循环语句。 应该分时间片的执行一个时间片10ms, 所以执行空循环应该为12800000次。
因此用C语言可以这样编写程序:
#include
#include
int main(int argc, char *argv[])
{
long n=12800000; //n表示执行的空循环次数
int i=0;
while(1)
{
for(i=0;i
{
//空循环
}
sleep(10);
}
system("PAUSE");
return 0;
}
温馨提示:答案为网友推荐,仅供参考