首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

cpu使用率,线程,进程解决思路

2012-03-26 
cpu使用率,线程,进程一个线程执行到一段代码,比如等待几秒,过几分钟再继续执行的代码。那么这个时候线程是

cpu使用率,线程,进程
一个线程执行到一段代码,比如等待几秒,过几分钟再继续执行的代码。那么这个时候线程是没有占有cpu资源的吗。
。,,,,,,,,,,,,,,,我看了一下我电脑上的进程有好几十个,但他们占用的cpu资源很多都是0,我想知道一个进程占用的cpu资源为0意味着什么,我完全不能理解。。。。。按照我的理解,一个进程里的线程如果没有执行任何操作的话,那个这个线程应该就已经结束了的。 像我开提到的计时器,就算线程处于等待的状态,那个这个计时器也应该占用cpu资源 的啊,那要不然计时器是怎么在工作的呢?。。。。。。。还有一个不明白的地方,windows系统,我开了两个界面程序 我没做任何操作,为什么 我的cpu有时候的使用率会是0%,我就不信在某一时刻cpu什么事情都没有干,至少应该windows的消息循环是永远在执行的把,那他永远存在为什么cpu的使用率还有可能为0.何解?

[解决办法]
不管是多线程还是多进程。一个CPU一个时间点时只有一个程序在运行。

1. CPU占用率是一个统计数字,代表一个时间段里程序占用CPU时间的比重。0不一定就表示真的没动过。
2. 计时器通常是内核实现,不计算在用户态的时间里。
2. 消息循环在没有消息的时候会停下来等待,不是空转。你的程序大部分时候没有消息处理的,即在等待状态(通常是等待一个消息,或者等待解锁,或者等待一个信号量……),这时程序确实没啥事可干,操作系统的调度策略会“照顾”它们,转而执行其它有需求的程序。
[解决办法]
线程等待几秒,会使线程睡眠,该线程不占用CPU时间,因为没有得到调度。

WINDOWS是抢占式的,当后台程序转为前台时,操作系统会动态提升进程优先级
[解决办法]
建议看一下《windows 核心编程》这里面对多线程 讲解的非常清楚

热点排行