让CPU利用率曲线听你指挥

在《编程之美--微软技术面试心得》的第1.1节中,讲到了怎么使cpu的利用率一直维持在50%左右。

 

个人感觉这个例子很有趣,它不光体现出了程序对计算机的掌控,更体现了编程不是枯燥的代名词,它一样可以很有趣,就比如此例!

 

这里主要是利用此例的解法一顺便把sleep函数讲一下:

要操作CPU的使用率曲线,就需要使CPU在一段时间内(根据Task Manager的采样率)跑busy和idle两个不同的循环(loop),从而通过不同的时间比例,来调节CPU使用率。

 

Busy loop 可以通过执行空循环来实现,idle 可以通过Sleep()来实现。

 

代码清单:

int main()

{

      for(; ;)

      {

          for(int i=0; i < 9600000; i++)

                ;

          Sleep(10);

       }

       return 0;

}

 

 

在VC6.0中代码是:

 #include <stdio.h>
#include <windows.h>

int main(void)
{
 int i;
 for(;;)
 {
  for(i=0;i<9600000;i++)
   ;
  Sleep(10);//根据具体CPU来确定的。
 }
 return 0;
}

 

 

在此把Sleep()函数讲下:

Sleep函数

  简介:
   在VC中使用带上头文件
   #include <windows.h>
   在标准C中的头文件是
   #include <stdlib.h>
   注意:
   在VC中Sleep中的第一个英文字符为大写的"S"
   在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.
  Sleep函数的一般形式:
  Sleep(unisgned long);
  其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);

           

 

                                                                                       

                                                                                                                                                                 15:34:03

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值