我们知道任务管理器每一秒钟刷新一次,这就要在这一秒钟内,使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
【程序控制cpu占用率介绍 线程cpu占用率】
#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;
}