美文网首页
理解同步异步与阻塞非阻塞的区别

理解同步异步与阻塞非阻塞的区别

作者: dingFY | 来源:发表于2020-05-14 08:51 被阅读0次

同步异步与阻塞非阻塞的概念对于很多初学者来说是一个模糊的概念,其实我们的生活中存在着很多同步和异步的例子。

同步和异步关注的是消息通信机制

在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

举个通俗的例子:

你打电话问书店老板有没有《ECMAScript 6入门》这本书时

如果是同步通信机制,书店老板会说,你稍等,别挂电话,”我查一下",然后开始查啊查,等查好了(可能是1分钟,也可能是一天)告诉你结果(返回结果)。在书店老板查找这个过程,你一直在等待他的回复,这期间你不能去干别的事情。

如果异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。在书店老板查找这个过程,这期间你可以先去干别的事情。

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

阻塞调用:是指调用结果返回之前,当前线程会被挂起。一直处于等待消息通知,不能够执行其他业务,调用线程只有在得到结果之后才会返回。
非阻塞调用:指在不能立刻得到结果之前,该调用不会阻塞当前线程,而会立刻返回。

举个通俗的例子:

同步阻塞:你打电话告诉老板你要买《ECMAScript 6入门》这本书,老板拿起电话听你说完就去查书,没有说话,你什么也不知道,在得到任何结果之前,你一直拿着电话干等,你此时什么也干不了。30分钟后老板直接把书送到你家,这时你才挂断电话。每次电话你都要得到结果(书到家)后你才挂断电话,这是同步。你一直拿着电话等结果,这是阻塞。

同步非阻塞:你打电话告诉老板你要买《ECMAScript 6入门》这本书,老板拿起电话后说“我不知道有没有货,现在去查”便挂了电话,又过了10分种你第二次打电话说你要买《ECMAScript 6入门》这本书,老板拿起电话说完“还没有查到,你再等会儿”便挂断电话。挂断电话5分钟后老板查到有书,但并没有主动打电话告诉你。你再次等待10分钟后第三次电话老板问结果,老板说“书有了,我给你送到家”,你断挂电话。每次电话你都要得得到结果(去查->还没有查到->有货)后你才挂断电话,这是同步。你每隔10分钟打电话询问结果,这是非阻塞。

异步阻塞:你打电话过去问老板有没有《ECMAScript 6入门》这本书,老板说“我不知道有没有货,现在去查,先挂了电话,有结果告诉你,你等我电话”就挂掉电话。等电话期间你什么也不干,老板主动给你发短信通知你结果书有了,5分钟后希望老板现在把书送来,你再次打电话让老板送书,老板马上送书上门。老板主动给你发短信,这是异步。等待老板的短信期间你什么也没干,这是阻塞。

异步非阻塞:你打电话过去后问老板有没有《ECMAScript 6入门》这本书,老板说“好的,有货我直接给你送上门”就挂掉电话。然后你想干嘛干嘛,等老板门到后你看书。等待老板主动给你送书上门,这是异步。挂了电话后你就想干嘛干嘛,这是非阻塞。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。

相关文章

  • Linux网络IO模型

    什么是同步与异步、阻塞与非阻塞 引用知乎 怎样理解阻塞非阻塞与同步异步的区别? 上面的一个回答,很生动的说明了同步...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • 同步、异步、阻塞、非阻塞,这下明白了

    同步阻塞,同步非阻塞,异步阻塞,异步非阻塞... 晕! 头! 转! 向! 对于小白来说,理解这些概念太难了。搜索这...

  • 聊聊Linux 五种IO模型【转载】

    上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过...

  • 聊聊Linux 五种IO模型

    上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了,没有看过...

  • 同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞IO

    同步,异步 和 阻塞,非阻塞之间的区别? 同步,异步,是描述被调用方的。阻塞,非阻塞,是描述调用方的。 同步不一定...

  • IO模型

    同步,异步,阻塞和非阻塞的概念与区别 同步和异步从消息通知机制角度来说的。 两个任务 同步一直等,异步不等 阻塞和...

  • BIO NIO AIO

    BIO:同步阻塞IONIO:同步非阻塞IOAIO:异步非阻塞IO先弄清楚同步、异步,阻塞、非阻塞概念。 io操作分...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

网友评论

      本文标题:理解同步异步与阻塞非阻塞的区别

      本文链接:https://www.haomeiwen.com/subject/qyjunhtx.html