精华内容
下载资源
问答
  • 同步与异步的概念

    2014-08-14 08:57:18
    异步:一种通讯方式,对设备需求简单。...异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。


    异步:一种通讯方式,对设备需求简单。我们的PC机提供的标准通信接口都是异步的。
    异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,结束时有停止位。
    异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
            所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。  
       
    异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。  
       
    并不是说谁好谁不好,只是同步的机制不适合在正式应用的项目当中(但自己测试还是可以的) 

    同步,就是实时处理,比如服务器一接收客户端请求,马上响应,这样客户端可以在最短的时间内得到结果,但是如果多个客户端,或者一个客户端发出的请求很频繁,服务器无法同步处理,就会造成涌塞。  

    异步,就是分时处理,服务器接收到客户端请求后并不是立即处理,而是等待服务器比较空闲的时候加以处理,可以避免涌塞。  

    同步和异步之分: 
    同步就是调用一个函数,直接函数执行完了才返回到调用函数 
    异步就是被调用函数初始化完后马上返回。 

    进程同步用来实现程序并发执行时候的可再现性。

    一.进程同步及异步的概念

    1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是

    sendmessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的lresult值返回给调用者。

    2.异步

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

    casycsocket类为例(注意,csocketcasyncsocket派生,但是其功能已经由异步转化为同步),当一个客户端通过调用connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。

    这里提到执行部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。如果执行部件用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重的错误)。如果是使用通知的方式,效率则很高,因为执行部件几乎不需要做额外的操作。至于回调函数,其实和通知没太多区别。

    进程同步的基本概念

    在计算机系统中,由于资源有限而导致了进程之间的资源竞争和共享,因此,进程的并发执行不仅仅是用户程序的执行开始时间的随机性和提高资源利用率的结果,也是资源有限性导致资源的竞争与共享对进程的执行过程进行制约所造成的。那么,在进程的并发执行过程中存在哪些制约呢?

    二.同步与异步传输:

    1.异步传输

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

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

    2. 同步传输

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

    三.同步阻塞与异步阻塞:

    同步是阻塞模式,异步是非阻塞模式。 

    我的理解:同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另外一个线程的运行。异步的意思是两个线程毫无相关,自己运行自己的。 

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

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

    举个不太恰当的例子,就像

    SendMessage(...) 

    TRACE0("just  like  send"); 

    PostMessage(...) 

    TRACE0("just  like  WSASend  using  overlapped"); 

     SendMessage是调用的时候不返回,等消息响应后才执行TRACE0,这就是同步

    PostMessage是调用后马上返回,不用消息响应就执行TRACE0,这就是异步.

    四.其它解释:

     同步和异步的区别

     举个例子:普通B/S模式(同步)AJAX技术(异步)

    同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

    异步请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

    同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。

    异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

    所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。

    举个例子 打电话时同步 发消息是异步

    展开全文
  • 在面试中,我们经常会被面试官问...1.同步与异步同步 此同步指是行为同步 例如一群人在学跳舞,前面还有一个小姐姐在领舞,学舞动作和领舞人动作是一样话,此时就是同步体现 2.同步通信与...

    在面试中,我们经常会被面试官问到:请解释一下同步的含义,此时,一定要注意这可能是个坑,注意!!!

    在被问到这个问题时,不要急着回答面试官,一定要向面试官确认一下,同步是那个背景的同步,别没问清楚就开始说哦

    1.同步与异步中的同步

    此同步指的是行为的同步

    例如一群人在学跳舞,前面还有一个小姐姐在领舞,学舞的人的动作和领舞人的动作是一样的话,此时就是同步的体现

    ps:进程/线程中的同步也是此处所指的同步

    2.同步通信与异步通信中的同步

    (1)同步

    就是说呢,在发出一个调用时,在没有得到结果之前,该调用就不会返回,而是一直在那里等着,直到调用执行结束,此时也获得了该调用的返回值,即就是同步指的是由调用者主动等待这个调用的结果

    (2)异步

    异步与同步刚好相反,调用在发出之后,这个调用就直接返回了,所以不会立即得到调用结果,而是在调用发出之后,调用结果由被调用者来告诉给调用者,即就是调用结果是由被调用者通过状态、通知来通知给调用者,或通过回调函数处理这个调用

    例如:

    假设你去吃饭,你点了一个炒菜:
      (1)同步就是说你点完饭之后,一直在那里等着厨师给你做,直到厨师做完,你把饭
      自己端走,即就是说结果由你自己主动获取,
       (2)异步呢就是你点完饭之后,去找一个位置坐着,当服务员告诉你饭做好了,
    你去把饭端过来,即就是说,结果由服务员通知给你,你自己使被动的得知调用结果
    的,如果服务员不通知,你是不会知道结果的
    

    阻塞和非阻塞关注的是程序在等待调用结果(消息、返回值)时的状态

    3.阻塞

    阻塞调用就是,在调用结果返回之前,当前线程什么也不会做,而是一直在那里等待,直到调用线程得到结果,此时才会返回

    4.非阻塞

    非阻塞调用就是在等待的时候,可以去做别的事,只是会轮询的去查看调用线程的状态

    5.同步阻塞

    同步阻塞=同步+阻塞
    调用结果由调用者主动获取,且是阻塞式的等待着 ,即就是说调用者会主动的关注调用结果,而且是阻塞式的在那里看着

    6.同步非阻塞

    同步非阻塞=同步+非阻塞
    调用结果是由调用者主动获取的,但是是非阻塞式的等着,此时的动作是调用结果是由调用者主动获取的,但是他不会在那里傻等着,而是会去做别的事,只不过需要时不时的去看一下程序的执行情况

    7.异步阻塞

    异步阻塞=异步+阻塞
    调用结果是由被调用者通知给调用者的,而且是阻塞式的在哪里等着,即就是调用者会一直在那里等着,但是不会去看程序执行的怎么样了,而是由被调用者来通知的

    8.异步非阻塞

    异步阻塞=异步+阻塞
    调用结果是由被调用者告诉调用者的,就是调用者是被动的得知结果的,调用者在等结果的过程中,并不是一直在那里傻等着,而是可以去做自己的事

    例如:
    你等女朋友去吃饭,女朋友现在的状态就是她还没收拾好,你需要等她
    (1)同步阻塞

    就是你在等她的时候,只是单纯的等她,不会去做别的事,而且你会主动的看她有没有收拾好,如果好了那就可以出去了

    (2)同步非阻塞

    就是再等她的同时你可以做别的事,例如一边等她一边做题,但是他有没有收拾好是你自己主动去看的,而不是由她通知你

    (3)异步阻塞

    就是你在等她的时候,什么也不能做,只能做一件事那就是等她,而且不会去关注她什么时候收拾好,等她收拾好,告诉你一声,此时你就会得知她已经可以收拾好了可以出去了,即就是你是被动的知道她收拾好的这个结果的

    (4)异步非阻塞

    就是你在等她的时候,你可以去做别的事,可以一边等她一边做自己的事,但是此时还是不会主动的去关注她什么时候时候好,直到她通知你,她已经可以出去了,此时你才会得知这个结果,你是被动的知道的

    展开全文
  • 写过几篇关于同步与异步相关代码的文章,不知你是否感受到了里面的含义,今天以个人见解谈谈我对同步与异步的理解。 同步是用户发起一个请求服务器得到想要查询的内容,这些内容包括文本,图片,视频信息等,这时...

    写过几篇关于同步与异步相关代码的文章,不知你是否感受到了里面的含义,今天以个人见解谈谈我对同步与异步的理解。
    同步是用户发起一个请求服务器得到想要查询的内容,这些内容包括文本,图片,视频信息等,这时后台服务器接收了用户的请求进行任务的处理,任务完成之后返回一个响应给用户,这就是一次请求一次响应。一次request,一次response。同步在生活中也很常见,比如说你去超市买一瓶酒,你给了老板钱,在老板未找给你剩余的钱时,你不会走吧,在等待的这段时间你和老板的交互中就是一次很简单的同步过程。异步调用在java语言的使用中主要体现在用户向服务器发起一个请求,服务器接收这个请求之后,后台又"转手"给了另外一个或多个线程去帮你去处理任务,及时给与你响应成功的应答,但是任务还在后台处理中,你可以去任务列表去看任务的处理进度。

    文章首发于公众号WwpwW,主要分享Java技术性文章,欢迎你的加入。
    在这里插入图片描述

    展开全文
  • js中同步与异步

    2019-05-10 13:47:04
    关于同步异步的含义: 我的解释: 同步:一段时间内,只能进行同一操作。不允许交叉。会产生阻塞。 异步:一段时间内,可进行多个操作。允许交叉。不会产生阻塞。 另一解释: 同步:不同的方法或语句顺序执行...

    关于同步异步的含义:

    我的解释:

    同步:一段时间内,只能进行同一操作。不允许交叉。会产生阻塞。

    异步:一段时间内,可进行多个操作。允许交叉。不会产生阻塞。

     

    另一解释:

    同步:不同的方法或语句顺序执行,无交叉。同步,即有序。有序,即同步。

    异步:不同的方法或语句不是按顺序执行的,近乎无序,有交叉。异步,即无序。无序,即异步。

     

    不专业,但是,是我觉得比较可以接受的两种解释。

     

    接下来,先简单介绍下axios:

    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

    从浏览器中创建 XMLHttpRequests
    
    从 node.js 创建 http 请求
    
    支持 Promise API
    
    拦截请求和响应
    
    转换请求数据和响应数据
    
    取消请求
    
    自动转换 JSON 数据
    
    客户端支持防御 XSRF

    举一个get请求的例子:

    // 为给定 ID 的 user 创建请求
    axios.get('/user?ID=12345')
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    
    // 可选地,上面的请求可以这样做
    axios.get('/user', {
        params: {
          ID: 12345
        }
      })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });

    假设这一请求,是一个页面的js代码的一部分,那么页面的其他部分涉及的操作与这一请求是异步进行的。也就是说在这个请求尚未完成之前,如果页面还有其他操作,那么这些操作是不会等待上述请求完成才进行的。

     

     

    同步操作虽然会产生阻塞,但是容易控制。

    而异步操作,不会产生阻塞,但是控制起来相对复杂些。

    比如,其他操作使用了这个请求的数据,这个请求的数据还没有返回来呢,就会出现问题,所以需要控制。

    还有,页面如何知道上述异步请求何时完成?

    这就涉及到异步操作的处理了。

     

    上述异步请求中的then有什么作用呢?字面意思就是“然后”,也就是“在获取数据后”,这就是异步操作的控制了。then中的方法会在返回请求数据后收到通知,然后才开始执行。

    比如说,在then里面调用window.alert()方法,这个方法就会在获取数据后执行,这就是对异步操作的控制。

    如果在then之外调用该方法,那么很可能,尤其是在请求的数据量比较大时,该方法会在取到数据之前执行,如果方法中使用了请求数据中的一部分,那么这是很可能就是没有数据的,因为数据还没取回来呢,这就是没有异步操作控制产生的问题。

     

     

    展开全文
  • 非阻塞这样概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回...
  • 相信很多同学遇到同步异步这两个词的时候大脑瞬间就像红绿灯失灵的十字路口一样陷入一片懵逼的状态:是的,这两个看上去很像实际上也很像的词汇给博主造成过很大的困扰,这两个词背后所代表的含义到底是什么呢?...
  • 相信很多同学遇到同步异步这两个词的时候大脑瞬间就像红绿灯失灵的十字路口一样陷入一片懵逼的状态:是的,这两个看上去很像实际上也很像的词汇给博主造成过很大的困扰,这两个词背后所代表的含义到底是什么呢?...
  • 一、同步调用与异步调用: 在用在调用场景中,无非是对调用结果不同处理。 我理解同步调用就是调用一但返回,就能知道结果,而异步是返回时不一定知道结果,还得通过其他机制来获知结果,如: a. 状态b. ...
  •  一、同步调用与异步调用:在用在调用场景中,无非是对调用结果不同处理。我理解同步调用就是调用一但返回,就能知道结果,而异步是返回时不一定知道结果,还得通过其他机制来获知结果,如:a. 状态b. 通知c. ...
  • 相信很多从事linux后台开发工作的都接触过同步&异步、阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们...异步的概念和同步相对。当一个异步过程调用发出后,
  •  对多处理器而言--多个程序在同一时刻发生,具有并发的含义,但并发不一定并行,也亦是说并发事件之间不一定要同一时刻发生。  并行:在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部...
  • ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍相信很多同学遇到同步异步这两个词时候大脑瞬间就像红绿灯失灵十字路口一样陷入一片懵逼状态:是,这两个看上去很像实际上也很像词汇给博主造成过很大困扰,这两个...
  • 在网络编程开发中,同步与异步、阻塞与非阻塞两组概念是大家极易混淆的,正确理解这两组名词背后的含义,对之后写出健壮的网络程序或者阅读开源的网络框架都是十分有意义的。另外,对这两组概念的理解也是面试过程中...
  • 非阻塞这样概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义。 1.同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回...
  • 你可能已经听说Node.js是“基于Chrome的V8 JavaScript引擎的异步JavaScript运行的”...其次要知道Node.js究竟“异步同步”有什么不同意思?还要讨论,“事件驱动”和“非阻塞”的含义是什么?什么是Node.jsNod...
  • 阻塞非阻塞与同步异步的区别 原文地址:https://www.zhihu.com/question/19732473/answer/241673170 IO 概念区分 四个相关概念: 同步(Synchronous) 异步( Asynchronous) 阻塞( Blocking ) 非阻塞( Nonblocking) ...
  •  首先先强调上下文:下面提到了同步与异步、阻塞与非阻塞的概念都是在IO的场合下。它们在其它场合下有着不同的含义,比如操作系统中,通信技术上。  然后借鉴下《Unix网络编程卷》中的理论:  IO操作中涉及的2...
  • 你可能已经听说Node.js是“基于Chrome的V8 JavaScript引擎的异步JavaScript运行的”...其次要知道Node.js究竟“异步同步”有什么不同意思?还要讨论,“事件驱动”和“非阻塞”的含义是什么?什么是Node.jsNod...
  • 同步和异步、阻塞非阻塞是耳熟能详的几个...同步异步的区别在于任务执行方和任务发起方是否在同一线程或者进程;同步指任务的发起方和执行方在同一个线程中完成;异步是一种常见的提升吞吐的手段,指任务的发起方和
  • 相信很多同学遇到同步异步这两个词的时候大脑瞬间就像红绿灯失灵的十字路口一样陷入一片懵逼的状态:是的,这两个看上去很像实际上也很像的词汇给博主造成过很大的困扰,这两个词背后所代表的含义到底是什么呢?...
  •  首先先强调上下文:下面提到了同步与异步、阻塞与非阻塞的概念都是在IO的场合下。它们在其它场合下有着不同的含义,比如操作系统中,通信技术上。  然后借鉴下《Unix网络编程卷》中的理论:  IO操作中涉及...
  • 看了一些这两个概念的解释,感觉不分场景的笼统理解是不对的,下面陈述一下我的理解:   这是两对概念,用在不同的语境会有一些不同的含义,不能一概而论。 整体来说,同步就是两...一、同步调用与异步调用: ...
  • 1.1 进程的含义 广义地说,进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。 进程是一种抽象的概念,是对程序的抽象。程序是一连串的代码或指令,是静态的东西,就像一本书放在那里。 那什么时候,...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 238
精华内容 95
关键字:

同步与异步的含义