1
Jirajine 2021-01-08 20:38:50 +08:00 via Android
软件代码通过 eventloop 产生的事件应该是有的,至于硬件,IO 设备在数据到达后发出通知是否需要就不清楚了。
|
2
imdong 2021-01-08 20:43:55 +08:00
假如你今天要接收一件快递,但不知道什么时间送来,你大概会有以下几种方案:
一:今天有快递要收,你去门口等快递来,快递不来你不走... 二:今天有快递要收,跑门口看一眼快递来了没,没来。等一会,再跑门口看一眼快递来了没... 三:今天有快递要收,门口装了门铃,我该干啥干啥。快递来了会按门铃的。 案例三其实是案例二的更高效方案,跑门口看快递来了没,改为一直听着门铃响了没。 好了,举了半天🌰,发现确实是始终有一个 while true 的地方... 但是,案例一属于特例,既是又不是,因为确实有一直等待而不是循环,但是把尺度拉到最小的是时候,你的人虽然在等快递,但是你的思绪可能已经放飞了... |
3
OysterQAQ 2021-01-08 20:44:10 +08:00
计算机层面可以依赖中断来实现吧,指令周期之后有中断周期来查询响应中断
|
4
0ZXYDDu796nVCFxq 2021-01-08 20:44:21 +08:00 via Android
任何一个守护进程都可以这么理解吧
|
5
OysterQAQ 2021-01-08 20:44:43 +08:00
很多问题需要了解体系结构才好去思考
|
7
billlee 2021-01-08 21:12:56 +08:00
中断不需要这个逻辑,类似的,SIGNAL 可以认为软件层面对中断的模拟,也没有这个逻辑
|
9
Sanko 2021-01-08 21:31:17 +08:00 via Android 10
从来没有什么岁月美好,只不过有人替你不断轮训
|
10
vinceall 2021-01-08 22:18:18 +08:00 via Android
总要有一个地方替你轮询啊,不管是应用层,框架,os,还是硬件
|
13
msg7086 2021-01-09 00:36:04 +08:00
不说硬件,软件层面的话操作系统就是在死循环分发时间片。
硬件的话,你的 CPU 也是一个死循环,不停从内存里扒指令,看看有没有事做,没事做就摸鱼。 |
14
php8 2021-01-09 00:51:28 +08:00 via Android
eventloop 就是
while(1) { waitForEvent(); dispatchEvent(); } 如果某个东西能重复做某件事,它就得带 loop,否则就是个一次性的东西了。 |
15
LxExExl 2021-01-09 02:11:30 +08:00
之前从没有写过网站之类的服务,我真的以为就是需要手写 while(1)
后来写作业发现像 API 这种监听的 function,只要写好 annotation,框架自己就能一直监听了,至于怎么实现的依然不清楚 hhh |
16
mumbler 2021-01-09 02:33:04 +08:00 via Android
计算机和人一样,活着就有心跳
|
17
himself65 2021-01-09 03:04:55 +08:00 via iPhone
你可以从汇编开始写点实模式代码,没有 hlt (暂停)的话的确是一直在跑🤔
|
18
Claar 2021-01-09 03:08:35 +08:00 via iPhone
不需要
这是主动和被动的问题 如果是主动控制的流程,那是需要持续轮询的 但如果是被动控制机制那就不需要了 硬件中断应该就是被动控制机制,对于 cpu 来说,某些消息是从天而降的,不是自己去内存里取的,什么是主动去取? cpu 执行指定控制流查找。怎么从天而降?某些不是用来执行汇编指令的部件在主动轮询甚至是被动持续,在消息到达的时候直接把 cpu 的执行流改了,对于 cpu 来说就是从天而降 对于一辆开动的火车,想要他改变方向怎么办?简单啊,第三方把他就要到达的那个位置的铁轨一歪,就到别的车道去了,火车啥都不知道,被动机制 这个第三方甚至不是个人,他是一块铁,消息到达时,另一边的铁轨上闪了一下火花把第三方吸过去了,顺带着铁轨也歪了 |
19
Claar 2021-01-09 03:12:05 +08:00 via iPhone
我猜问题的 while 1 肯定不会是问电脑能跑程序是因为上了电这种持续状态吧……
|
20
xiadong1994 2021-01-09 03:39:43 +08:00 via iPhone
系统 kernel 是不能退出 /return 的,在 idle 的时候你猜猜它在干什么……
|
21
zhuzhibin 2021-01-09 10:24:19 +08:00 via iPhone
阻塞监听消费
|