异步和同步的区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步和同步的区别?相关的知识,希望对你有一定的参考价值。

一、传输单位不同

1、异步:异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。

2、同步:同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差错控制。



二、含义不同

1、异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

2、同步:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  

三、模式不同

1、异步:异步是非阻塞模式。

2、同步:同步是阻塞模式。

参考技术A 同步和异步的概念对于很多人来说是一个模糊的概念,是一种似乎只能意会不能言传的东西。其实我们的生活中存在着很多同步异步的例子。比如:你叫我去吃饭,我听到了就立刻和你去吃饭,如果我们有听到,你就会一直叫我,直到我听见和你一起去吃饭,这个过程叫同步;异步过程指你叫我去吃饭,然后你就去吃饭了,而不管我是否和你一起去吃饭。而我得到消息后可能立即就走,也可能过段时间再走。如果我请你吃饭,就是同步,如果你请我吃饭就用异步,这样你比较省钱。哈哈哈。。。
在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
而我们平时经常讨论的同步问题多发生在多线程环境中的数据共享问题。即当多个线程需要访问同一个资源时,它们需要以某种顺序来确保该资源在某一特定时刻只能被一个线程所访问,如果使用异步,程序的运行结果将不可预料。因此,在这种情况下,就必须对数据进行同步,即限制只能有一个进程访问资源,其他线程必须等待。
实现同步的机制主要有临界区、互斥、信号量和事件
临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资 源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。
互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 .互斥量比临界区复杂。因为使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 。信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
事件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作 。
参考技术B 异步和同步的区别:同步是所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉,这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。
异步是将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动可以关闭浏览器了。然后程序再慢慢地去写入数据库去,用户没有卡死的感觉,可以关闭界面。
同步就相当于当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端,
异步就是当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高效率。
参考技术C 同步很好理解,就是和比较对象的步伐完全一致。
知道同步的概念了,异步就是异于同步,步伐不一致了,也许快,也可能慢。
参考技术D 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

(顺序执行处理事件)

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
(可同时执行多个事件的并发)本回答被提问者采纳

ajax 同步和异步的区别

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

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

看看open方法的几个参数。

.open (http-method, url, async, userID, password)

(后面是帐号和密码,在禁止匿名访问的http页面中,需要用户名和口令)

首先看看异步处理方式。

其中async是一个布尔值。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器 返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的 request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式:Flase。

以上是关于异步和同步的区别?的主要内容,如果未能解决你的问题,请参考以下文章

同步请求和异步请求的区别

POST和GET以及同步请求和异步请求的区别

同步请求和异步请求的区别

正确理解同步/异步和阻塞/非阻塞的区别:

java同步和异步的区别

java中同步和异步有啥异同?