小白日更第六十七天->同步异步,阻塞和非阻塞的区别

本文详细解释了同步和异步、阻塞和非阻塞的概念。同步是指调用者必须等待结果返回才能继续,而异步则允许调用者在结果返回前继续执行。阻塞调用会导致当前线程挂起,非阻塞调用则不会。通过电水壶的例子形象地说明了两者的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同步和异步

同步:当一个同步调用发出去后,调用者要一直等待调用结果的返回后,才能进行后续的操作。
异步:当一个异步调用发出去后,调用者不用管被调用方法是否完成,都会继续执行后面的代码。 异步调用,要想获得结果,一般有两种方式:
1、主动轮询异步调用的结果;
2、被调用方通过callback来通知调用方调用结果;

其实总结的话就是:同步和异步是相对服务器端来说的。服务器在受到我们的请求后,如果立刻给我们返回一个响应,哪怕没有返回给我们需要的信息,只是简单的给我们一个相应。那就是异步的。如果是在找到我们需要的资源之后的才给我们响应,那就是同步的。

阻塞和非阻塞

阻塞:调用在发出去后,在消息返回之前,当前进/线程会被挂起,直到有消息返回,当前进/线程才会被激活;
非阻塞:调用在发出去后,不会阻塞当前进/线程,而会立即返回。

总结的话也很简单,阻塞和非阻塞就是就是相对于客户端。当我们向服务器发起了一个Http请求以后,我们是挂起线程然后等待服务器给我们返回结果还是继续干其他的事情,等到服务端找到我们需要的信息以后通知我们,我们再去接收,而不是一直死等。

我记得之前我看过有人举了这样一个例子:
同步阻塞:
就相当于是我们之前烧水,我们要一直在炉子旁边等待水烧开,在水烧开之前我们不能干任何事情,只能等待水烧开,我们才能去干其他的事情。
异步非阻塞:
就相当于我们用了电水壶,我们把水倒进电水壶以后,插上电,然后我们就该去打游戏打游戏,该去学习就学习,完全不影响我们干其他的事情,等水烧开以后,电水壶会发出嗡嗡嗡的警报,来告诉我们水烧开了,快来呀~~然后我们就可以把水晾凉然后喝,或者干一些其他的事情,泡脚等等。

以上就是我对同步喝异步,阻塞和非阻塞的理解,有什么错误的地方,希望小伙伴们在评论区指正~~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值