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

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 是不是所有的同步/异步/事件通知/发布订阅等等概念都需要一个地方完成一个类似 while(1)的逻辑?
未分類
11 1 月 2021

是不是所有的同步/异步/事件通知/发布订阅等等概念都需要一个地方完成一个类似 while(1)的逻辑?

是不是所有的同步/异步/事件通知/发布订阅等等概念都需要一个地方完成一个类似 while(1)的逻辑?

資深大佬 : zhoudaiyu 0

小白不太懂这些,但是感觉至少不在我的代码里写个死循环,但是肯定在某块代码或者硬件有这种逻辑,不知道是不是正确的?
大佬有話說 (21)

  • 資深大佬 : Jirajine

    软件代码通过 eventloop 产生的事件应该是有的,至于硬件,IO 设备在数据到达后发出通知是否需要就不清楚了。

  • 資深大佬 : imdong

    假如你今天要接收一件快递,但不知道什么时间送来,你大概会有以下几种方案:

    一:今天有快递要收,你去门口等快递来,快递不来你不走…
    二:今天有快递要收,跑门口看一眼快递来了没,没来。等一会,再跑门口看一眼快递来了没…
    三:今天有快递要收,门口装了门铃,我该干啥干啥。快递来了会按门铃的。
    案例三其实是案例二的更高效方案,跑门口看快递来了没,改为一直听着门铃响了没。

    好了,举了半天

  • 資深大佬 : OysterQAQ

    计算机层面可以依赖中断来实现吧,指令周期之后有中断周期来查询响应中断

  • 資深大佬 : gstqc

    任何一个守护进程都可以这么理解吧

  • 資深大佬 : OysterQAQ

    很多问题需要了解体系结构才好去思考

  • 主 資深大佬 : zhoudaiyu

    @OysterQAQ #5 是的 不太理解硬件层

  • 資深大佬 : billlee

    中断不需要这个逻辑,类似的,SIGNAL 可以认为软件层面对中断的模拟,也没有这个逻辑

  • 資深大佬 : OysterQAQ

    @zhoudaiyu 计算机组成原理、计算机操作系统、计算机网络、数据结构与算法来一遍就行

  • 資深大佬 : Sanko

    从来没有什么岁月美好,只不过有人替你不断轮训

  • 資深大佬 : vinceall

    总要有一个地方替你轮询啊,不管是应用层,框架,os,还是硬件

  • 資深大佬 : raaaaaar

    @OysterQAQ #8 很好,下学期就要全过一遍了。。

  • 資深大佬 : OysterQAQ

    @raaaaaar 建议计组和操作系统用考研的标准来过 其他两个可以跟老师上

  • 資深大佬 : msg7086

    不说硬件,软件层面的话操作系统就是在死循环分发时间片。
    硬件的话,你的 CPU 也是一个死循环,不停从内存里扒指令,看看有没有事做,没事做就摸鱼。

  • 資深大佬 : php8

    eventloop 就是
    while(1) {
    waitForEvent();
    dispatchEvent();
    }

    如果某个东西能重复做某件事,它就得带 loop,否则就是个一次性的东西了。

  • 資深大佬 : LxExExl

    之前从没有写过网站之类的服务,我真的以为就是需要手写 while(1)

    后来写作业发现像 API 这种监听的 function,只要写好 annotation,框架自己就能一直监听了,至于怎么实现的依然不清楚 hhh

  • 資深大佬 : mumbler

    计算机和人一样,活着就有心跳

  • 資深大佬 : himself65

    你可以从汇编开始写点实模式代码,没有 hlt (暂停)的话的确是一直在跑

  • 資深大佬 : Claar

    不需要
    这是主动和被动的问题
    如果是主动控制的流程,那是需要持续轮询的
    但如果是被动控制机制那就不需要了
    硬件中断应该就是被动控制机制,对于 cpu 来说,某些消息是从天而降的,不是自己去内存里取的,什么是主动去取? cpu 执行指定控制流查找。怎么从天而降?某些不是用来执行汇编指令的部件在主动轮询甚至是被动持续,在消息到达的时候直接把 cpu 的执行流改了,对于 cpu 来说就是从天而降
    对于一辆开动的火车,想要他改变方向怎么办?简单啊,第三方把他就要到达的那个位置的铁轨一歪,就到别的车道去了,火车啥都不知道,被动机制
    这个第三方甚至不是个人,他是一块铁,消息到达时,另一边的铁轨上闪了一下火花把第三方吸过去了,顺带着铁轨也歪了

  • 資深大佬 : Claar

    我猜问题的 while 1 肯定不会是问电脑能跑程序是因为上了电这种持续状态吧……

  • 資深大佬 : xiadong1994

    系统 kernel 是不能退出 /return 的,在 idle 的时候你猜猜它在干什么……

  • 資深大佬 : zhuzhibin

    阻塞监听消费

文章導覽

上一篇文章
下一篇文章

AD

其他操作

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

51la

4563博客

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