异步(asynchronous)和同步(synchronous),从字面上可以理解为一个事情处理顺序的问题。同步就是下一步计划必须等待上一步完成,否则不能做其他事情;异步就是下一步计划可以不用等待上一步完成,可以先去做别的事情,然后在某个未知的时刻再回到上一步完成的地方继续工作。

     同步与异步概念可以说是无处不在,不管是生活中还是计算机领域,只是我们平时在生活中没有留意这个问题。在计算机的理论学习中应该经常会碰到这个概念的,比如硬件方面的(硬件一般都是异步的,比如I/O),然后上升到软件方面的。硬件方面比如快、慢速设备的配合上,软件方面也有很多的例子,比如Win32 API下的消息发送函数SendMessage和PostMessage一个同步,一个异步,多CPU硬件环境下的多个线程的执行也是非同步的。从人的习惯上同步是较容易代码的书写的,比如DoFunction我希望知道执行是否成功,只要判断返回值就可以。但异步就不行了,DoFunction只能说明我已经调用了这个函数或者执行完了也没有异常,但结果可能需要被动等待通知。