分享

同步和异步的区别

 xihayouyi 2014-02-22

答案一:

 

同步和异步是两种交互或者通信方式。放在计算机网络里有数据包的传输方式,放在总线级上又有外设和内存之间数据的传输方式。放在操作系统里,进程之间的交互也有同步和异步两种交互方式。但是其精髓是一样的。

计算机网络领域:
1.异步传输 

通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。起始位对应于二进制值 0,以低电平表示,占用 1 位宽度。停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽度。一个字符占用 5~8位,具体取决于数据所采用的字符集。例如,电报码字符为 5 位、ASCII码字符为 7 位、汉字码则为8 位。此外,还要附加 1 位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的差错控制。发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。典型的速率有:9 600 b/s、19.2kb/s、56kb/s等。 

异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。 


-------------------------------------------------------------------------------- 

2. 同步传输 

通常,同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。 

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
答案二:

 
同步是阻塞模式,异步是非阻塞模式。  
---------------------------------------------------------------  
 
我的理解:同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另外一个线程的运行。同步就是两个进程,或者是两个任务处理流程的处理节奏在一个接凑下,并且子操作需要配合执行。就像操作系统里的信号量。PV操作。异步的意思是两个线程毫无相关,自己运行自己的。  因为异步事件发生的毫无征兆。并很难预测,所以就以中断异常的方式实现进程异步交互。
 



 举个例子:普通B/S模式(同步)AJAX技术(异步)
同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
--------------------------------------------------------------------------------------------------------------------
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
--------------------------------------------------------------------------------------------------------------------
举个例子 打电话时同步 发消息是异步

同步 指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。

异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

并发:

在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 在关系数据库中,允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。 操作系统并发程序执行的特点: 并发环境下,由于程序的封闭性被打破,出现了新的特点: ①程序与计算不再一一对应,一个程序副本可以有多个计算 ②并发程序之间有相互制约关系,直接制约体现为一个程序需要另一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等。 ③并发程序在执行中是走走停停,断续推进的。

 

 

何谓同步,抛开任何技术型相关的东西,同步就是步骤的一致性,这种步骤的一致性在不同的技术中又有不同的解释,我们一一介绍,在现有的B/S架构中,就是采用了同步的方式进行的,注意我们这里只说B/S架构采用同步方式而不是说HTTP协议采用同步方式,因为http本身是基于tcp连接的,而tcp连接又是同步协议,所以HTTP本身是同步的,没有异步的http协议。这种异步方式我们可以理解为时序,也就是当从浏览器发出一个http请求,浏览器就什么也不干,就等着接受返回来的http响应,这就是同步,但是,很明显这种同步方式不利于现在的B/S架构,于是出现了AJAX技术,ajax技术本身是一种异步通信,也就是说当浏览器发出请求信号后,就无需一直等待接受整个的http返回式页面,他可以发送完后去干别的事情。但是,我们应该知道这仅仅是表面上的异步,实际上,浏览器设置了一个监听线程在不断的等待即将到来的http响应,也就是说把原本由浏览器进程做的事情交给了浏览器的某个线程。

       其实,同步还有一种意思,那就是一致性,例如在分布式数据库中,也存在同步性,这种同步就是一致的意思,例如,如果存在的冗余的数据,当一个数据库系统改变后,另外一个也必须改变,这也是同步的另外一种意思。在传输当中,分为同步传输和异步传输,所谓的同步传输就是在数据链路层,采用帧的方式进行通信,把数据打包成帧格式,以数据块为单位进行传输,在数据块中加入同步信息,也就是说能够让接受端知道一个具体数据块的开始和结束。异步传输其实是为每个bit加入同步信息。

       从上面的各种解释,我们可以看出所谓的异步都是基于同步的,因为自然科学的任何领域没有同步性质存在就不可能发展,任何的异步性都是一种表面性质的东西,没有同步的支持,任何的纯异步性是不存在的。说的简单一些,异步性其实就是在原来同步的基础之上抽象出来的。例如,我们写信给朋友,邮寄出去以后,我们并不需要什么也不干,整天等着。这就是可以称为通信的异步性,但是,我们是否发现,我们必须有中东西再时时刻刻替我们在等待,例如信箱,电话。这种东西本身就代表着同步,这两种东西你不能让他们去忙别的,你不能把信息放到屋里乘垃圾,用完了再放回原来的位置,因为他必须相当于一个守候线程时刻在原位置进行守候,否则就无法接受信息。通过这个例子,我们就可以很好的理解异步的本质了。

       所以从某种意义上讲,任何的协议都是同步的,协议的同步性应该包括两个方面,一个就是协议所规定的通信的同步性,也就是说一方发完信息后,采用什么方案等待,是留下一个线程等候,还是直接什么都不干。另外一个就是协议内部定义的标识符所代表的含义。所以我们是否可以这样认为,同步和协议是完全对等的,同步必须通过协议完成。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 全屏 打印 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多