
1 YouLMAO 2021-01-19 10:21:35 +08:00 via Android 单线程啊大哥 |
2 linksNoFound 2021-01-19 10:26:29 +08:00 单进程,每个进程的资源是有限的 |
3 wakzz 2021-01-19 10:31:05 +08:00 会耗尽单 CPU 的资源 |
4 jackmod 2021-01-19 10:35:34 +08:00 不要看总数,看单个 CPU 的占用,肯定是 100%。 |
5 jackmod 2021-01-19 10:36:40 +08:00 补充:如果单核占满了,CPU 同样会过热,然后风扇狂转。这种浪费是我难以忍受的。 |
6 wangxn 2021-01-19 10:38:59 +08:00 via iPhone 操作系统还是大 boss,它随时能中止程序的执行。 所有程序都是分时间片执行,总会返回内核,它永远不会占用 100%的时间。 |
7 Jooooooooo 2021-01-19 10:47:31 +08:00 能耗尽一个核 如果是 8 核的机器搞一个死循环然后去看 cpu.busy 的监控会发现一条 12.5% 左右的线 |
9 pinews OP 我说正常的 while true 是正常使用的。比如 kafka 的 php 示例就是 while true 我看 cpu 也没什么变化,如果跑满 4 核不是要占到 25 33 ? |
10 systemcall 2021-01-19 11:05:25 +08:00 via Android 自己去复习多任务 正常的 while,用中断可以跳出去执行别的,不会卡死。系统有个中断向量表,而且会管理多任务,正常情况下不会让一个进程独占所有的资源 |
11 pinews OP @wangxn 如果 while(true){};那是不是他把所有时间片都占用了,所以会 100% @julyclyde iowait 是啥?大概了解了一下,如果 cpu 虽然不用干活,但是也不能干别的,那有什么区别? @systemcall 程序是怎么调用中断的?比如消息队列,我到 github 上搜源代码,看不懂,也没找到什么想要了解的信息 |
13 sryanyuan 2021-01-19 18:46:46 +08:00 调度策略是充分利用 cpu 资源,防止有进程想要资源却得不到满足,当你只有一个死循环的时候,调度的资源就都给那个进程了,所以就表现为 100%了,因为它不断的想要 cpu,没有其它任务和它抢 |
15 pinews OP @ben1024 阻塞就是超时等待吧? 我借之前一个网友去快递点取快递的例子总结下。 第一个是,去了发现没有就回来,然后马上再接着去(很累很蠢,因为本来是预计已经到了,只取一次的) 第二个是,去了发现没有就回来,过一会( sleep )再去(不累了,但是会不及时) 第三个是,去了返现没有,就在那里等,如果在这个时间里没等到就回来,然后接着去,但是很有可能等到,或者干脆等不到就不回来,直到等到才回去(不累也很及时,但是要快点递支持在里面等) 例子不是很恰当,大概是这个意思吧,那个 iowait 应该是第三种吧,所以 while true 没 sleep 能又快又轻松完成任务。 |