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 咨询。