新闻  |   论坛  |   博客  |   在线研讨会
Callback Function
xinjinlong | 2011-07-20 09:54:19    阅读:4104   发布文章

看了一些关于回调函数的定义,感觉还是这个说的清晰:
如果程序A中使用的一个function B,我们会说程序A调用了function B;如果一个系统模块的API要求你给传入一个函数指针(function pointer),而这个函数指针指到一个实际的函数(多半是你自己写的);然后系统模块会在适当的时间调用次函数,则次函数就是所谓的call function。因为这个函数就是被callback.

这样的技巧广泛是使用在系统与驱动程序中;以系统处理键盘事件为例,当一个key被按下时,keyboard driver会辨认哪一个key被按下了,并且把这个事件送给OS处理,通常OS在经过一种转换后也会这个key的信息存在一个queue中,最后交给应用程序处理。

我们假设一种状况,user连续按下A、B、C、D与ENTER共五个key,应用程序处理key A需要的时间较长,则其他四个key事件就会被存在queue中,暂时无法被处理。若此时使用者等的不耐烦了,按esc想跳出这个功能,应用程序改如何应付?

在一般的设计架构中,整个流程应用程序完全无法插手,而OS也无法定义esc key的意义为何;所以在上述状况中,esc key也会被存贮在queue中,要等到前五个key都处理完毕,应用程序才知道原来esc key已经被按下了。callback function可以解决这个问题,让应用程序设计更有弹性;简单的说,应用程序可以先定对keyboard driver或者OS注册处理ESC key的funcion pointer,则每当有key时间发生时,keyboard driver或者OS除了执行原来的流程外,在适当的时候就会调用应用程序注册function,所以esc key就可以提前被处理。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
五湖四海皆朋友
最近文章
浅谈MIPS的MMU(二)
2016-08-16 19:33:41
浅谈MIPS的MMU(一)
2016-05-05 10:55:06
推荐文章
最近访客