一个例子帮你理解 同步、异步、阻塞、非阻塞

本文通过肯德基吃早餐的例子,生动阐述了同步、异步、阻塞和非阻塞的概念。同步意味着主动获取信息,如盯着屏幕等待;异步则是被动接收通知,如被叫号取餐。阻塞是指在等待过程中不做其他事情,而非阻塞则允许在等待期间进行其他活动。四种组合中,同步非阻塞和异步非阻塞更高效,而同步阻塞和异步阻塞效率较低。
摘要由CSDN通过智能技术生成

概念

同步/异步:需不需要主动获取,主动获取就是同步,被动通知才是异步。

阻塞/非阻塞:去不去干其他的事,去干其他的事就是非阻塞,不去干其他的事就是阻塞。

所以同步/异步和阻塞/非阻塞这是两个维度的问题。

理论上,有四种搭配:

  • 同步阻塞
  • 同步非阻塞
  • 异步阻塞
  • 异步非阻塞

一个生动的例子

下面就通过一个生活中的例子来对标这四种情况,帮助更好地理解。

比如,你去肯德基吃早餐,你可以选择在店里等着啥也不做,眼睛一直盯着屏幕(注意,眼睛一直盯着屏幕就是一个主动获取的行为),看服务员是否已经做好,然后主动去拿,在这个过程中,第一、你主动获取信息这叫同步,第二、你其他啥事也没干这叫阻塞,综合起来就是同步阻塞模式。

但是现实生活中,不需要我们一直盯着看有没有做好,而是服务员叫号,叫到我们(这个行为对我们来说就是被动通知的),我们去拿,这叫异步,当然,在食物未做好之前,我们有两个选择:① 啥也不做,就在那发呆;② 打把游戏或者刷会视频,如果是①那就是阻塞,综合起来就是异步阻塞,如果是② 那就是非阻塞,综合起来就是异步非阻塞。

四种搭配对应的现实情况如下:

  1. 同步阻塞(盯着屏幕主动获取 + 其他啥事也不干)。解释:因为你一直盯着屏幕,所以导致你其他事啥也干不了,你没干其他事,所以你可以专心盯着屏幕。
  2. 同步非阻塞(轮询主动获取 + 干其他事)。解释:你干着其他事,还要主动获取,那么就需要以轮询(轮询就是定时发出询问)的方式去主动获取。因为你去干其他事 了嘛,所以就不会像同步阻塞模式那样可以专心盯着屏幕获取结果(这里专心盯着屏幕相对于轮询来说,本质上就是访问的频次远远高于轮询,比如,轮询可能几秒一次,那么盯着屏幕主动获取就是零点几毫秒一次,现实生活中,盯着屏幕是个持续性事件,但是计算机是二进制的,我们认为零点几毫秒一次就算持续了)。
  3. 异步阻塞(被动通知 + 其他啥事也不干)。解释:就是上面被动叫号,然后在那发呆的那种情况。这不是有病嘛,都不用你主动获取了,你有这个时间为啥不去干点其他事呢,所以,这种情况存在倒是存在,但是相对于同步阻塞也强不哪去,因此这种情况不多见。
  4. 异步非阻塞(被动通知 + 干其他事)。解释:这种模式效率就比较高了,可以专心先去干其他事,又不用以轮询的方式去获取,只需要被动通知即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值