简述同步异步、阻塞与非阻塞

欢迎指正

1.关于

  • 1.1 涉及2个对象 调用方(函数,对象,变量....) 与 被调用方(函数)
  • 1.2 涉及概念: 同步异步阻塞非阻塞

2.简述概念

计算是需要时间的,OS处理函数所需的时间也不尽相同,有长有短。 下面有例子,but先说概念:

  • 2.1 同步调用方调用函数后,必须等待函数的返回结果,才能继续执行下一次调用。
  • 2.2 异步调用方调用函数后,可以不用等待函数的结果,也可以执行下一次调用。
  • 2.3 阻塞: 线程的状态之一,通俗理解为:线程暂停运行,一直等待某个结果,一旦得到结果,线程继续执行。这里说的是调用方所在线程。
  • 2.4 非阻塞: 与2.3相反,调用方调用函数后,可以在被调用方(函数)运行期间做其他的事。
    同步与异步:关注的是 被调用方怎么把数据返回给调用方
    阻塞与非阻塞:关注的是线程的执行状态。

3.一个例子

类比生活中拿快递: 快递代收点用户。 买到了自己心仪的宝贝, 当你收到代收点的通知,自己的宝贝已经到了,于是高高兴兴来到代收点:

  • 3.1 同步: 此时,你对工作人员说:你好,我来取快递,取件码是XXX,谢谢。 工作人员:请稍等。工作人员立即搜寻你的包裹,然后再确认信息(收件人名或者电话号码),再将包裹交给你。
  • 3.2 异步: 此时,你对工作员人说:你好,我来取快递,取件码是XXX,谢谢。工作人员:好的,请在3mins后来取。然后工作人员搜寻包裹或者处理其他事了,你在3min后再来拿包裹。
  • 3.3 阻塞: 此时,你对工作人员说明来意是取快递并告知取件码。工组人员搜寻包裹的这段时间,你一直等待在这里,不能做其他的,眼巴巴的看着工作人员,真希望他能快点,等待工作人员将快递递给你。
  • 3.4 非阻塞: 此时,你对工作人员说明来意是取快递并告知取件码。工组人员搜寻包裹的这段时间,虽然你一直等待在这里,但是在等待工作人员将快递递给你的这段时间内,你可以做点其他的,打开淘宝,浏览宝贝。

4.组合

接着上面的3的例子。

  • 4.1 同步阻塞同步是说,工作人员正在为你搜寻,一旦找到,立即给你。阻塞是你在工作人员搜寻快递的时间内,什么都不能干,只能在这里傻傻的等着。
  • 4.2 同步非阻塞同步是说,工作人员正在为你搜寻,一旦找到,立即给你。非阻塞是在这段搜寻包裹的时间内,你可以打开淘宝浏览器他的,而非傻傻的等着。
  • 4.3 异步阻塞异步是说,工作人员说,找到包裹需要时间,你等个3分钟再来拿。阻塞是你站在一旁,傻傻的等着结果。
  • 4.4 异步非阻塞异步是说,工作人员说,找到包裹需要时间,你等个3分钟再来拿。非阻塞是你站在一旁,拿起自己的手机,继续逛淘宝,而非傻傻的等着。
posted @ 2020-10-06 01:23  mohist  阅读(264)  评论(0编辑  收藏  举报