回调函数之同步调用、回调、异步调用

软件模块中存在一定接口,从调用方式上分为三类

1、同步调用;2、回调;3、异步调用

首先,同步调用是一种阻塞式调用,调用方要等待对象执行完毕才返回。它是一种单向调用。

其次,回调是一种双向调用模式,也就是说,被调用方在接口被调用得同时会调用对方得接口。

最后,异步调用是一种类似消息或者事件的机制,不过它的调用方向刚好相反,接口的服务在收到被调用的信息或事件时,会主动调用(调用方)的接口。

回调和异步调用得关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。

对于不同类型的语言(结构化语言和对象语言)、平台(win32,jdk)等,客户和服务的交互除了同步方式以外,都需要具备一定的异步通知机制,让服务方或接口提供方,在某些情况下能主动通知客户,而回调是实现异步的一个最简捷的途径。

结构化语言中,可以通过回调函数还实现回调,回调函数也是一个函数或过程,不过它是一个由调用方自己实现,供被调用方使用的特殊函数。

在面向对象语言中,回调则是通过接口或抽象类来实现的,我们把实现这种接口的类称为回调类,回调类的对象称为回调对象。对于象C++或objectPascal这些兼容了过程特性的对象语言,不仅提供了回调对象、回调方法等特性,也行兼容过程语言的回调函数机制。

原文地址:https://www.cnblogs.com/ouyangping/p/6400806.html