码迷,mamicode.com
首页 > 其他好文 > 详细

关于[同步异步]和[阻塞非阻塞]的个人理解

时间:2015-06-16 11:02:32      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

同步 异步

阻塞 非阻塞

 

如上两个概念比较容易混淆, 而且实际情况来看二者有时效果相似, 最主要的相似点就是不需要等别人, 下面简单总结下自己的认识

 

  同步异步  

 

同步和异步是指发起一个服务调用时,是否需要等待调用对象的执行结果.  服务调用分为 [发送命令,调用执行,读取结果 ]

如果需要等待调用对象执行完毕后把结果返回给调用者, 这样就是同步的模式

如果A调用一个服务B, A不需要等B的结果返回就直接返回做其他事情, A只需要发送命令,  等B调用执行完毕后通知A进行 读取结果, 这样是异步的

 

阻塞和非阻塞的概念

二者仅仅是针对I/O操作而言的, 也就是仅仅针对如上步骤中的读取结果而言的, 

阻塞就是io数据没有ready的时候线程就暂停等待

非阻塞就是io数据没有ready时候我立即返回,并且配合轮询重试来完成读取.

 

上面两组概念唯一的不同是所描述的问题场景的粒度不同,  同步可以适用在各种上层次的服务调用, 阻塞只适用在最细粒度的io读写, 

如果说把io读写也看做一个服务调用, 那么二者没有什么太大区别.

正是因为二者所解决的问题粒度不同, 而本质上是相似的, 所以才会容易混淆, 所以一句话:  涉及到io调用,那么就是阻塞概念,涉及到上层的服务调用,那就用同步和异步

 

 这里仅仅是根据目前的理解发布的拙见, 如果有理解严重错误, 请高手不吝指教. 

 

 

关于[同步异步]和[阻塞非阻塞]的个人理解

标签:

原文地址:http://blog.csdn.net/kissmile/article/details/46515027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!