同步、异步、阻塞和非阻塞

本文主要是个人总结,可能有误!因为有关这几个概念,网络上的表述虽大同小异但众说纷纭,只能按自己的理解再总结一遍。

表面上看,同步和阻塞都是没干完,就等着干完;异步和非阻塞都是没干完,先干别的吧,好像很类似!

实际上,同步和异步是对调用方而言,比如说同步函数、异步函数,异步函数里有个参数是回调函数;

而阻塞、非阻塞都是对处理方(被调用方)而言,针对的是线程。阻塞,就是还没有结果,将线程挂起。线程挂起以后,就是处于死等的状态;非阻塞,还没有结果,线程不挂起,可以继续做别的。

如果从范围大小看,同步异步要大于阻塞非阻塞。同步机制里面,线程可以阻塞,也可以非阻塞。就是说,我这个调用,是同步的,去办一件事,一定要办成一个结果才返回。但在办事的过程中,我可以响应其他事。

同理异步方面,也有阻塞非阻塞之分。

编一个故事来区分这几个概念:

入冬,冷空气来袭,天气反复,有一个小朋友病了,父母带他去看医生。

首先要挂号。母亲抱着小朋友,让父亲去挂号(开辟了一个线程)。

情况1、孩子高烧,母亲很担心孩子的病情,心急如焚,就在旁边等父亲挂好号,然后一起去看医生。过程中她心乱如麻,脑子基本一片空白,一心盼望父亲快点挂完号。这就是同步

情况2、孩子没有发烧,只是有点咳嗽、流涕,应该是小感冒而已。母亲不怎么担心,她对父亲说,你先去拿个号,好了再叫我们。然后自己就带小孩到医院大院里的儿童设施里玩去了。这就是异步

 

情况a  父亲也很担心孩子病情,并且排队挂号的人很多,整个过程中他就一直盯着前面,希望队伍挪动得快一点,也生怕有人插队。以致有小偷掏他口袋,他也浑然不觉。这时,他这个线程处于挂起状态。这就是阻塞

情况b 父亲毕竟是个男子汉,他认为儿子没有这么娇贵。所以他掏出手机,边排队边玩手机。期间他还接了几个电话,谈了一次工作,安排了一个饭局。他这个线程保持激活,随时对外界做出反应。这就是非阻塞

情况a 和 情况b 放在情况一里,就是同步阻塞或同步非阻塞;放在情况二里,就是异步阻塞或异步非阻塞。

 

参考文章:

http://kalogen.iteye.com/blog/670841

http://www.zhihu.com/question/19732473

================================================================

有必要再仔细解释一下线程阻塞

 

什么叫阻塞(block)?线程在执行中如果遇到I/O操作(磁盘读写、网络通信等)通常需要耗费较长的时间,这时候操作系统会剥夺线程对CPU的控制权,使其暂停,并把资源让给其它的工作线程,这种线程调度方式成为阻塞。当I/O操作完毕的时候操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权,令其继续执行,这种I/O模式就是同步I/O或成为阻塞I/O。

线程非阻塞,就是把耗时长的工作交出去,给操作系统或别的对象,然后该线程继续往下执行。交出去的工作部分,执行完毕后以某种方式(比如事件)再通知原来的线程。

==========================================

所谓同步/异步,关注的是能不能同时开工。

所谓阻塞/非阻塞,关注的是能不能动。

参考文章:

【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
同步阻塞和异步阻塞是两种不同的函数调用方式。 同步阻塞是指在发起函数调用后,调用方不会等待函数的结果返回,而是立即继续执行后续的代码。这意味着调用方无需等待函数的执行结果,可以继续处理其他任务。当函数执行完毕后,调用方可以通过轮询或者回调等方式来获取函数的结果。同步阻塞的优点是能够提高系统的并发性和响应性。 异步阻塞是指在发起函数调用后,调用方也不会等待函数的结果返回,但是与同步阻塞不同的是,异步阻塞会通过回调、事件通知等方式来通知调用方函数的执行结果。调用方可以继续执行其他任务,并在合适的时机处理函数的返回结果。异步阻塞的优点是能够提高系统的并发性和性能,减少资源的浪费。 总结来说,同步阻塞和异步阻塞都是在函数调用时不会发生线程阻塞的情况下继续执行后续代码,但区别在于同步阻塞需要主动轮询或回调来获取函数的结果,而异步阻塞则通过回调或事件通知等方式传递函数的执行结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深入理解同步阻塞同步阻塞、异步阻塞、异步阻塞](https://blog.csdn.net/wangpaiblog/article/details/117236684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值