注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

dp: 生活的脚步,进步的点滴...

Cam、DSP、FPGA、PM、Life、More ...

 
 
 

日志

 
 

同步/异步 & 阻塞/非阻塞总结  

2012-05-30 20:19:26|  分类: 专业 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
自己的理解,对这个问题来个总结。文中不对之处,还请各位及时指出^_^
1、首先同步和异步是时序概念,阻塞和非阻塞是一种响应模式(特别是当资源受限时,响应很不一样)。
2、同步可以看作是通信双方都清楚的事件流,是通信协议最重要的部分。没有同步,就是没有共同语言,同步是通信的前提。
3、为什么要有异步?异步是为了提供并发性而出现的一个概念(如线程就是一种异步机制,中断也是)。
2中已提到同步是通信的前提,所以所谓的异步不是就1对1的通信而说的,而是就1对多或多对多这样的通信整体来说的。所以就具体的1对1通信来说,异步需要提供回调、事件或信号等机制来同步。举个例子:A进程与B进程存在了耗时的通信,于是A开一个线程A1与B周旋,不等A1与B通信完成而用其它线程继续与C,D等进程通信,当A1与B通信完毕后,采用同步机制(信号,事件等)来通知A,B进程.这样从整体上看,A进程与B进程间的通信是异步的,而更为细化点A1与B还是同步的.
4、阻塞与非阻塞的出现也是为了提供并发性而出现的一种实现机制.在单任务机器上阻塞是必然的,而在多任务机器上,阻塞给其它非阻塞提供了更多的调度机会.
阻塞与非阻塞最大的区别是:当操作环境不具备时,阻塞操作不返回,阻塞的执行者就被挂起,直到操作环境具备时,阻塞操作才返回,阻塞的执行者被唤醒;而非阻塞操作则不然,无论操作环境是否具备,都是立即返回.
5、正因为同步/异步与阻塞/非阻塞是两个不同的概念,所以你中有我,我中有你.同步是通信前提,阻塞/非阻塞以及异步归根到1对1通信时都是同步的;异步是并发思想/概念,没有异步,阻塞/非阻塞就没了指导思想,阻塞何时变成非阻塞(这个通知机制就是异步的概念);阻塞/非阻塞是实现多对多异步通信的一种手段,其实,我们用其它手段实现异步通信时,最终还是通过阻塞某些操作并不阻塞另外一些操作来实现的~~

6、总结。同步是逻辑层次上的点对点的一致协商是通信前提,异步是并发(包含突发)的代名词(写到最后突然发现的,不知是不是思维走入死胡同了^_^),阻塞/非阻塞是实现并发的手段。补充说明:电气电子通信中经常提到异步通信,这里的异步通信是指通信双发的时钟步调不怎么严格一致,最终通过起始位和停止位等来实现同步。所以同步是逻辑层次上的点对点一致协商^_^
写到这里,我头都晕了~~~就扔笔了^_^

原文由 bripengandre于2008年07月20日11:29:07发表于武汉白云黄鹤站SOCKET讨论区
  评论这张
 
阅读(401)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016