ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

while(true)循环与CPU占用率

2019-09-25 18:04:39  阅读:228  来源: 互联网

标签:占用率 死循环 while 进程 true CPU


一、为什么死循环占用CPU高

Q:一个进程如果是死循环,那么占有的CPU会很高,可是操作系统时间片运行到一定时间不是会自动切换到别的进程吗?既然如此,即便是死循环,到时间还是会切换到别的进程,为什么占用CPU会高呢? 

A:到时候的确会切换到别的进程。
可以这样理解:当切换到别的进程时,别的进程告诉系统自己没什么事情要做,不需要那么多的时间,这个时候系统就会切换到下一个进程,直到回到这个死循环的进程上,而这个进程无论什么时候都在循环,所以一直会报告有事情要做,系统就会把尽可能多的时间分给他。
实际上是这个死循环任务用光了别的进程节省下来的时间。
(虽然不是很准确,真正的进程调度实现比上面说的复杂得多,不过应该可以解释你的问题了)

 

二、导致CPU占用率如此之高的元凶就是程序中的几个while(true)死循环

用代码解释如下:
while(true){
   //your code
}
改进之后:
while(true){
   Sleep(1);
   //your code
}
其实就是添加了一句“Sleep(1)”,但是CPU占用率就直接从100%跌到了1%左右。

from:http://blog.sina.com.cn/s/blog_74a459380102uwcb.html

标签:占用率,死循环,while,进程,true,CPU
来源: https://blog.csdn.net/heybeaman/article/details/101375133

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有