标签:执行 nbsp 完成后 roc 异步 回调 void ini something
回调函数刚开始理解的时候是有点困难,回调函数主要的目的是让使用者通过函数处理掉数据,不需要再次读取当前操作的完成状态,从而实现功能。
以异步写入EEPROM为例:
如果在异步写入E2之后,原本的操作是让使用者轮询当前任务是否完成,这样写出来的代码类似于:
if(true == E2WriteFinish()) { //TODO something }
等待写完之后再执行其他任务,但是如果使用回调函数,就可以在写入的时候附加一个回调的钩子,类似于这样:
1 EepromWrite(int* data,int length,int address,void (*p)(int result));
最后这个就是丢给写任务的回调函数,然后我们可以自己写这个任务完成后需要做的事情:
void E2WriteFinishProcess(int result) { //TODO something }
整个函数执行的流程是这样的
使用者调用 EepromWrite()→函数执行→在里边调用(*p)(result);
这样对使用者来说只需要执行写函数就可以了,不用在每次周期轮询是否异步写完了的操作。如果理解了的话回调函数还是比较简单的。
标签:执行 nbsp 完成后 roc 异步 回调 void ini something
原文地址:https://www.cnblogs.com/lengzc/p/11883596.html