cpu使用率,线程,进程

q52591330 2012-03-08 11:16:41
一个线程执行到一段代码,比如等待几秒,过几分钟再继续执行的代码。那么这个时候线程是没有占有cpu资源的吗。
。,,,,,,,,,,,,,,,我看了一下我电脑上的进程有好几十个,但他们占用的cpu资源很多都是0,我想知道一个进程占用的cpu资源为0意味着什么,我完全不能理解。。。。。按照我的理解,一个进程里的线程如果没有执行任何操作的话,那个这个线程应该就已经结束了的。 像我开提到的计时器,就算线程处于等待的状态,那个这个计时器也应该占用cpu资源 的啊,那要不然计时器是怎么在工作的呢?。。。。。。。还有一个不明白的地方,windows系统,我开了两个界面程序 我没做任何操作,为什么 我的cpu有时候的使用率会是0%,我就不信在某一时刻cpu什么事情都没有干,至少应该windows的消息循环是永远在执行的把,那他永远存在为什么cpu的使用率还有可能为0.何解?
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaohongbo84 2012-03-08
  • 打赏
  • 举报
回复
建议看一下《windows 核心编程》这里面对多线程 讲解的非常清楚
东莞某某某 2012-03-08
  • 打赏
  • 举报
回复
线程等待几秒,会使线程睡眠,该线程不占用CPU时间,因为没有得到调度。

WINDOWS是抢占式的,当后台程序转为前台时,操作系统会动态提升进程优先级
nossiac 2012-03-08
  • 打赏
  • 举报
回复
不管是多线程还是多进程。一个CPU一个时间点时只有一个程序在运行。

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

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧