注册与回调
来源:互联网 发布:unity a 寻路算法源码 编辑:程序博客网 时间:2024/06/03 12:28
何为回调(callback)
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。
一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B叫甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。
下面举个通俗的例子:
某天,我打电话向你请教问题,当然是个难题,:),你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。
这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。什么情况下使用回调
如果你是SDK的使用者,一旦别人制定了回调机制,那么你被迫得使用回调函数,因此这个问题只对SDK设计者有意义。
从引入的目的看,回调大致分为三种:
1) SDK有消息需要通知应用程序,比如定时器被触发;
2) SDK的执行需要应用程序的参与,比如SDK需要你提供一种排序算法;
3) SDK的操作比较费时,但又不能让应用程序阻塞在那里,于是采用异步方式,让调用函数及时返回,SDK另起线程在后台执行操作,待操作完成后再将结果通知应用程序。
经上面这样一总结,你也许会恍然大悟:原来“回调机制”无处不在啊!
是的,不光是Win32 API编程中你会用到,也不光是其它SDK编程中会用到,平时我们自己编写程序时也可能用到回调机制,这时,我们既是回调的设计者又是回调的使用者。
源地址:http://blog.csdn.net/zxncvb/article/details/6714924
- 注册与回调
- 注册与回调
- 注册与回调
- 注册与回调
- 注册与回调
- 【C++】注册与回调
- ContentObserver回调与ContentProvider注册notifychange
- 函数注册与回调实例
- 函数的注册与回调【经验】
- 再谈谈注册(本质是建立映射)与回调
- 注册回调机制
- 设备注册与驱动注册
- 回调函数与注册函数
- 再论无处不在的回调机制---注册与回调
- unity 注册事件回调
- MVP接口回调注册
- 软件注册与加密
- 注册与破解
- nginx 反向代理和负载均衡配置
- 腾讯ISUX: 面向未来的 CSS Variable (CSS变量)
- HDU 5744 Keep On Movin 贪心,找规律
- HBase性能优化方法总结
- 【bzoj2157】旅游(树链剖分边权)
- 注册与回调
- UWP入门(一) -- 先写几个简单控件简单熟悉下(别看这个)
- 获取网络数据填充Listview
- Mac获取Android数字签名(SHA1)
- 通向架构师的道路(第二十四天)之Oracle性能调优-朝拜先知之旅
- Android UI优化方案
- 从cookie里获取用户名和密码,保存密码功能
- Python+Selenium实现新浪微博自动登录
- 使用MFC过程中遇到的问题以及解决方法(三)