空的死循环为什么会让cpu100% 您所在的位置:网站首页 cpu占用过高会死机吗 空的死循环为什么会让cpu100%

空的死循环为什么会让cpu100%

2024-03-30 19:45| 来源: 网络整理| 查看: 265

while (1) { //空代码块 }

      上面这个代码相信很多人都写过,这个代码的后果就是cpu会100%(具体数值要看cpu核数和操作系统对这个的表示方法,有的2核会显示50%,有的2核会显示100%),如果是单核那么你的电脑会相当卡了。解决这个问题的办法很简单

while (1) { sleep(1); }

加上一个sleep(1),让她休眠一秒就好了。现在都是多任务操作系统了,电脑上不会只有这一个进程,cpu不是按时间片轮转来执行吗?就算是单核,cpu利用率也不应该是100%啊,为什么会这样呢?我们知道一个线程有三种状态:

 

假设现在加上这个  空的死循环线程 有100个线程  ,它们的优先级相同,其它99个线程有空闲的也有不是空闲的。 运行之后,cpu

根据时间片来执行这些线程,每当执行完某个线程的部分代码即将要进入空闲状态时,这个空的死循环会不断的向cpu申请资源,cpu立即去执行这个空的死循环,导致cpu没有空闲的状态,最后会100%   (cpu从一个线程切换到另一个线程,也要消耗cpu)。

打个比方,现在有一个环卫工人,负责打扫5条街,本来是打扫完一条街可以休息10分钟(一条街40分钟内没有垃圾)。但是现在由于第二条街人口剧增,每当环卫工人准备休息的时候,街道办就打电话来说赶紧去打扫第二条街,如此一来环卫工人再也没有休息的时间了。

 

 

 

最后 由于春运快到了,给大家安利一个抢火车票的小程序心到抢票,微信扫码关注点击立即抢票即可

个人亲测效率很高,大家也可以加他们官方微信  xdticket  咨询。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有