让Windows7 cpu占有率100%的分析

   之前在微软的《编程之美》中有道题目大概是“控制任务管理器中cpu的曲线”,也就是根据自己的意愿来控制cpu的占有率。而我今天只想说的是如何让cpu占有率为100%。

   首先,我写了如下程序:

void main()
{	
	while(true)
	{	
		int n = 10;
	}
}

   也就是执行一个死循环,让cpu没有空闲,理论上说cpu的占有率就应该是100%。

   当我打开windows任务管理器,查看cpu占有率,图如下:


    很明显cpu占有率只有30%左右,跟理想情况100%差别很大。

    后来我发现cpu使用记录中有四幅cpu的曲线图,以前从来没有认真去看过,这四幅图是什么意思。在网上查了,才知道这四幅图分别表示cpu0、cpu1、cpu2、cpu3的使用记录。也就说我电脑上有4个cpu。我看了一下电脑的配置,双核。这就对了,每个核可以虚拟出两个cpu,总共四个cpu。

    再回到程序,这个线程虽然是一直忙的,但是它可能被不同的cpu调度。如果时间片平均在每个cpu上,并且假设每个cpu性能一样,那么该线程在每个cpu上的占有率应该为25%,再加上其他程序的占有率,接近30%,差不多。

    那么如何是该程序只运行在一个cpu上呢?可以在程序中设定。但是我们选择更简单的方法,在任务管理器中设置。如下图:

   选择你的进程,鼠标右键,选择设置相关性。

 

  从这里可以选择cpu,注意选择cpu以后不要重启程序,直接去性能窗口看cpu即可。

  我只选择cpu0,然后再观察cpu占有率,发现cpu0的占有率为100%,跟预想情况一样了。

 

  总结:现在单个cpu的计算机已经很少了,就算是单核,多半会虚拟出两个cpu。通过该例子,可以大致理解,线程被多cpu调度的情况。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值