参考链接
摘抄
编程模型
- 单线程同步模型:每个任务按照时间的顺序一个接一个的依次执行

-
多线程模型:每一个任务由一个独立的线程控制

-
异步模型:各个任务是相互交错的,由一个单线程控制

对比单线程同步模型和异步模型
在单线程同步模型中的任务经常被强制等待和阻塞的情况(频率较高的原因是它在等待I/O,从一个外部的设备传输数据)下,会出现下图的情况:

和一个同步的程序相比,一个异步的程序在以下的情况中表现得更好:
- 存在大量的任务,大多数时间至少有一个任务在执行
- 任务执行大量的I/O操作,导致一个同步的程序浪费大量的时间在阻塞当其他的任务可以执行时
- 任务之间是相互独立的,各个任务很少需要内部的交流(因为一个任务等待另一个任务)
前端中“同步”和“异步”概念的理解
- 同步,就是在客户端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例子:普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回,这个期间客户端浏览器不能干任何事。
- 异步,当c端一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。例子:ajax请求(异步): 请求通过事件触发->服务器处理(这时浏览器仍然可以作其他事情)->处理完毕