网络编程-同步和异步的概念

序言

同步和异步的主要区别。


1. 同步的概念


  • 同步就是一直等到消息或返回值后才执行其他的事情。即在等待消息的时候不做其他事情

    • 比如两人约定见面,在等到对方的时候不做其他事情一直等
  • 同步可以理解为单线程。线程请求一个方法后就等待这个方法给它回复,否则就不往下执行

  • 同步就是调用一个函数,直到函数执行完了才返回调用函数

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

    • 比如打电话,打电话我一定要在旁边听着,保证双方都在线


2. 异步的概念


  • 异步就是等待消息或返回值的时候我还会做其他事情

    • 比如两人约定见面,在等待对方的时候你还可以看手机、看书、打电话,而不是什么事也不做的一直等
  • 异步可以理解为多线程。在请求一个方法后,就不管了,继续执行其他的方法

  • 异步就是调用一个函数,函数初始化完后马上返回去做其他事情

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

    • 比如发短信,双方不用时刻保持在手机旁,也不用时刻留意手机有没有来短信,我可以看着视频,来了短信我就处理短信,也可以不处理
  • 异步的分类
    严格来说,异步有两种

    • [1] 一种是等,但是等的过程和同步不一样,等的时候还可以做别的工作,但是程序的主线还是等待

      • 请求的后期工作是在发出请求的线程上执行
    • [2] 另一种是回调方式,这种异步是完全不等待,程序主线发出请求后就去做别的事情了,完全不理会请求执行的如何,所以异步必然涉及两个以上线程

      • 请求的后期工作可以在任何线程(通常是执行请求的线程)上完成


3. 同步/异步区别举例

比如一个文章系统,文章通常是字数非常多的,如果数据量大打开的非常慢,这个时候同步异步的处理方式是不同的
  • 同步

    • 一直等到要显示的数据全部取出来

    • 标题、作者、创建时间、关键字、点击次数、正文

    • 全部取出

    • 显示

实时处理,函数执行完了才返回调用函数

  • 异步

    • 首先显示能够快速去除的部分

    • 标题、作者、创建时间、关键字、点击次数

    • 显示

    • 然后另外一个线程等待取出文章的正文

    • 显示

    分时处理,函数初始化完就去做其他事情了,做一件事情的同时不影响做其他事情


参考文章:

http://avaj.iteye.com/blog/151724
http://blog.csdn.net/tennysonsky/article/details/45111623

2017.10.27

你可能感兴趣的:(网络编程)