纵说“同步”与“异步”
声明:引用请注明出处http://blog.csdn.net/lg1259156776/
说明:这里只是为了强调两个概念,同步和异步的含义。在数字电路中通常指的是有无同步时钟信号,如果有同步时钟,就称为同步,没有则称为异步。比如同步串行通信与异步串行通信,SDRAM中的S也是指的同步时钟的意思。在操作系统或者是多任务编程中,同步与异步指的是函数调用的返回时间,比如线程同步与线程异步。这里对相关概念进行梳理。
1. 编程中的同步与异步
这里的同步指的就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。最常见的例子就是sendmessage函数,该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的lresult值返回给调用者。
这里的异步指的就是当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如在套接字socket编程中,当一个客户端通过调用connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。
下面一段摘自同步与异步Socket