资讯专栏INFORMATION COLUMN

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

sPeng / 437人阅读

摘要:转载自在实际应用中,只有三种调用方式同步阻塞同步非阻塞和异步。同步异步同步和异步关注的是消息通信机制。当被调用者获得结果,会使用其他方式来通知调用者,或者通过回调函数来处理这个调用。然后查好了,他会主动打电话给你回调函数。

转载自 https://www.zhihu.com/questio...

在实际应用中,只有三种调用方式:同步-阻塞、同步-非阻塞和异步

同步 (synchronous) vs. 异步 (asynchronous)

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

同步:发出一个调用,在没有得到结果之前,该调用不返回。一旦调用返回,就得到返回值了。

异步:发出一个调用,这个调用就直接返回了,所以没有返回结果。当被调用者获得结果,会使用其他方式来通知调用者,或者通过回调函数来处理这个调用。

举个通俗的例子:

你打电话问书店老板有没有《分布式系统》这本书。如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。

而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你(回调函数)。

阻塞 (blocking) vs. 非阻塞 (non-blocking)

阻塞和非阻塞关注的是程序在等待调用结果时的状态

阻塞调用:在调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。

非阻塞调用:在不能立刻得到结果时,该调用不会阻塞当前线程。

还是上面的例子:

你打电话问书店老板有没有《分布式系统》这本书。如果是阻塞式调用,你会一直等待,直到得到这本书有没有的结果。

如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了。你可能要偶尔过几分钟询问一下老板有没有返回结果(异步-轮询),或者让老板主动打电话来告诉你结果(异步-回调)。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94687.html

相关文章

  • Node.js 指南(阻塞与非阻塞概述)

    摘要:标准库中的所有方法都提供非阻塞的异步版本,并接受回调函数,某些方法还具有对应的阻塞方法,其名称以结尾。比较代码阻塞方法同步执行,非阻塞方法异步执行。 阻塞与非阻塞概述 此概述介绍了Node.js中阻塞与非阻塞调用之间的区别,此概述将引用事件循环和libuv,但不需要事先了解这些主题,假设读者对JavaScript语言和Node.js回调模式有基本的了解。 I/O主要指与libuv支持的...

    zebrayoung 评论0 收藏0
  • nginx、swoole高并发原理初探

    摘要:一阅前热身为了更加形象的说明同步异步阻塞非阻塞,我们以小明去买奶茶为例。等奶茶做好了,店员喊一声小明,奶茶好了,然后小明去取奶茶。将响应结果发给相应的连接请求处理完成因为基于,所以每个可以处理无数个连接请求。如此,就轻松的处理了高并发。 一、阅前热身 为了更加形象的说明同步异步、阻塞非阻塞,我们以小明去买奶茶为例。 1、同步与异步 ①同步与异步的理解 同步与异步的重点在消息通知的方式上...

    denson 评论0 收藏0
  • nginx、swoole高并发原理初探

    摘要:一阅前热身为了更加形象的说明同步异步阻塞非阻塞,我们以小明去买奶茶为例。等奶茶做好了,店员喊一声小明,奶茶好了,然后小明去取奶茶。将响应结果发给相应的连接请求处理完成因为基于,所以每个可以处理无数个连接请求。如此,就轻松的处理了高并发。 一、阅前热身 为了更加形象的说明同步异步、阻塞非阻塞,我们以小明去买奶茶为例。 1、同步与异步 ①同步与异步的理解 同步与异步的重点在消息通知的方式上...

    617035918 评论0 收藏0
  • JS—异步、回调、高阶函数

    摘要:而是在调用发出后,被调用者通过状态通知来通知调用者,或通过回调函数处理这个调用。请求程序发出请求,从服务器端获取数据,并设置了回调函数。然后,浏览器会设置侦听来自网络的响应,拿到数据后,将该回调函数插入到事件循环。 并发与并行 并发是指两个或多个事件链随时间发展交替执行,以至于从更高的层次来看,就像是同时运行(但在任意时刻只处理一个事件) 并发的关键是你有处理多个任务的能力,不一定同...

    Dean 评论0 收藏0
  • Java IO的一些思考

    摘要:最近面试问的比较多的问题就是这一块了,有些也答出来了,有些答的不好,最近这段时间开始深入了解一些这方面的东西,也想总结一下。 最近面试问的比较多的问题就是IO这一块了,有些也答出来了,有些答的不好,最近这段时间开始深入了解一些这方面的东西,也想总结一下。 前置点 1,用户空间系统空间 Linux系统会把一个进程分为两个空间,用户空间和系统空间,比如我们正常的编码,操作的都是用户空...

    468122151 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<