跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 正常的 while true 为什么不加 sleep 也不会耗尽 cpu?
未分類
5 2 月 2021

正常的 while true 为什么不加 sleep 也不会耗尽 cpu?

正常的 while true 为什么不加 sleep 也不会耗尽 cpu?

資深大佬 : pinews 10

单线程啊大哥
大佬有話說 (15)

  • 資深大佬 : YouLMAO

    单进程,每个进程的资源是有限的

  • 資深大佬 : linksNoFound

    会耗尽单 CPU 的资源

  • 資深大佬 : wakzz

    不要看总数,看单个 CPU 的占用,肯定是 100%。

  • 資深大佬 : jackmod

    补充:如果单核占满了,CPU 同样会过热,然后风扇狂转。这种浪费是我难以忍受的。

  • 資深大佬 : jackmod

    操作系统还是大 boss,它随时能中止程序的执行。
    所有程序都是分时间片执行,总会返回内核,它永远不会占用 100%的时间。

  • 資深大佬 : wangxn

    能耗尽一个核

    如果是 8 核的机器搞一个死循环然后去看 cpu.busy 的监控会发现一条 12.5% 左右的线

  • 資深大佬 : Jooooooooo

    所谓正常 while 那就是里边还多少执行了点儿正经内容的呗
    正经内容很难跑满 cpu 的,多少会有点 iowait 啥的

  • 資深大佬 : julyclyde

    我说正常的 while true 是正常使用的。比如 kafka 的 php 示例就是 while true 我看 cpu 也没什么变化,如果跑满 4 核不是要占到 25 33 ?

  • 主 資深大佬 : pinews

    自己去复习多任务
    正常的 while,用中断可以跳出去执行别的,不会卡死。系统有个中断向量表,而且会管理多任务,正常情况下不会让一个进程独占所有的资源

  • 資深大佬 : systemcall

    @wangxn 如果 while(true){};那是不是他把所有时间片都占用了,所以会 100%
    @julyclyde iowait 是啥?大概了解了一下,如果 cpu 虽然不用干活,但是也不能干别的,那有什么区别?
    @systemcall 程序是怎么调用中断的?比如消息队列,我到 github 上搜源代码,看不懂,也没找到什么想要了解的信息

  • 主 資深大佬 : pinews

    @pinews IO 的时候这个程序是没办法执行下去的,只能等
    cpu 可以去干别的,如果有别的

  • 資深大佬 : julyclyde

    调度策略是充分利用 cpu 资源,防止有进程想要资源却得不到满足,当你只有一个死循环的时候,调度的资源就都给那个进程了,所以就表现为 100%了,因为它不断的想要 cpu,没有其它任务和它抢

  • 資深大佬 : sryanyuan

    @pinews
    里面的执行任务里有同步阻塞

  • 資深大佬 : ben1024

    @ben1024 阻塞就是超时等待吧?

    我借之前一个网友去快递点取快递的例子总结下。

    第一个是,去了发现没有就回来,然后马上再接着去(很累很蠢,因为本来是预计已经到了,只取一次的)
    第二个是,去了发现没有就回来,过一会( sleep )再去(不累了,但是会不及时)
    第三个是,去了返现没有,就在那里等,如果在这个时间里没等到就回来,然后接着去,但是很有可能等到,或者干脆等不到就不回来,直到等到才回去(不累也很及时,但是要快点递支持在里面等)

    例子不是很恰当,大概是这个意思吧,那个 iowait 应该是第三种吧,所以 while true 没 sleep 能又快又轻松完成任务。

  • 主 資深大佬 : pinews

    @pinews
    可能是第二种,sleep 的时间短,然后在验证下队列消息

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具