回调函数的意义

一个工程需要甲乙两个人一起完成:
甲方:正常工作需要ABC三个模块,A、C模块我都有,我需要一个B,而且我对B是有要求的;
乙方:我正好有B,你看行不行,你需要的时候我把B模块的密钥告诉你。

上文中的B就是回调函数,甲方规定了回调函数的格式,乙方负责根据格式和项目要求去送给甲方不同的B(回调函数),通常乙方都会通过将自己所拥有的B的密钥送给甲来实现(即函数指针)。
为什么要使用这样一个机制呢?可能有两种情况:
1.这个项目的要求可能会更改,AC模块不用变,B模块需要经常更改,这个时候甲方不用动,乙方送上不同的B模块就好;
2.B模块规定只能由乙方来拥有,甲不能拥有B的所有权。

第一种情况不用解释,现实中就是为了解耦。针对第二种情况,现实中有许多例子:
例子1:QT中的槽函数就相当于一个回调函数,UI主线程是乙方,指定了槽函数,控件是甲方负责将信号告诉UI线程信号,能得到信号是因为开启了消息循环;
例子2:开辟了一个子线程用于获取图像,但是需要显示在主界面上,子线程是不能直接重绘界面的,此时需要在UI主线程中预先给子线程一个图像显示区域的句柄(指针),其实也就是回调函数,告诉子线程你需要重绘的时候告诉我,我来执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值