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 2
操作系统还是大 boss,它随时能中止程序的执行。
所有程序都是分时间片执行,总会返回内核,它永远不会占用 100%的时间。 |
7
Jooooooooo 2021-01-19 10:47:31 +08:00
能耗尽一个核
如果是 8 核的机器搞一个死循环然后去看 cpu.busy 的监控会发现一条 12.5% 左右的线 |
8
julyclyde 2021-01-19 11:02:33 +08:00
所谓正常 while 那就是里边还多少执行了点儿正经内容的呗
正经内容很难跑满 cpu 的,多少会有点 iowait 啥的 |
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 能又快又轻松完成任务。 |