同步和异步 并发和并行

所谓同步(Synchronization),可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令.

所谓异步(Asynchronous),则是执行完函数或方法后,无需等待返回值或消息,只需要向系统委托一个异步过程,然后CPU就可以干别的任务去了,而当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程.

简而言之:

同步就是调用一个函数后必须要函数执行完了才返回.

异步就是被调用函数后,不管函数内的调用完成与否,都会马上返回.

因此,同步的流程往往不适合大并发大流量的程序;而异步的程序,说实话好像都很棒,除了代码比较难写.


并行(parallellism)是指两个或者多个事件在同一时刻发生,如果它的英文释义,是平行发生的.

并发(concurrency)则是指两个或多个事件在同一时段内间隔发生,它可以快速交替任务的处理,但是同一时刻只能有一条指令执行.

并行适用于多线程,而并发往往配合异步.