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

欢迎指正

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分钟再来拿。非阻塞是你站在一旁,拿起自己的手机,继续逛淘宝,而非傻傻的等着。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwgdf.html