“回调函数”是这个意思么?

回调函数,我们经常在Windows用到,可到了如今让我自己给别人提供回调函数,着实让我懵了一把。这东西怎么是实现啊?——以前我可是总使用别人的。
什么是回调函数呢?它的原理机制又是怎么样的呢?从英文单词的理解到使用方法的分析,我自己总结了一下,不知是否正确,大家给些想法。

打个通俗的比方: 老板给我交代一项任务(我当然是力巴了),让我给A项目做个方案,尽快完成,完成后给他打个电话,并把报价和项目周期告诉给他,他要和用户联系并对项目评估。
这里面有几项要素了:
1、老板[LevelUP]=上层
2、我[LevelLow]=底层
3、A项目[Param]=参数
4、电话[CallBackNumber]=联系方式(C all Back number)
5、报价和项目周期[retData]=返回的数据
6、尽快=没有要求是 马上,因此是 异步方式
7、 和用户联系并对项目评估=老板接到电话之后要做的事情[上层要完成的工作]
那么,回调函数可以理解为:
上层对其下层的调用,回调函数的地址就是下层完成工作之后通知上层联络方式,回调函数的返回参数是下层完成工作之后返回上层的数据,回调函数的实现就是上层接到通知和数据之后自己随后好作的工作。

回调函数使用的场合:
1、异步数据处理
2、上下层之间的数据交换

从层次关系上看:
是上层应用 提供给下层应用的“接口”

由于是跨层、跨内存的,因此:
回调函数只能以地址的形式传递,就像电话号码一样(管它是办公室电话、还是手机,反正打这个电话就能找到老板)。

至此,有个问题:
虽然callback函数的codes是由上层实现的,但是底层有没有把callback内容embed到自己的进程中?callback依然是在用户的进中完成?或者是说,底层仅仅给上层一个singal。还是相反?

如果按照上面的类比看,callback的codes应该在上层的内存段运行比较合理一些。或者,callback的codes是在一个share/common memory之中?

希望大家给出一些讨论。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值