BREW Callback

来源:互联网 发布:锂电池仿真软件 编辑:程序博客网 时间:2024/05/05 07:40

到目前为止,BREW(不包括bmp)的所有应用都运行于单一的Task(进程或者线程),所有应用间不具有抢占的特性。各应用的运行是基于协作式的。所谓的协作式,就是应用主动的让度CPU供其他App使用,让度的方式就是BREWAEECallback机制。

请注意,AEECallback实例必须是长期有效的,不得在堆栈或者寄存器中分配(临时变量),因为BREW Callback的运行是异步的,并且BREW内核不会对AEECallback实例进行备份。

典型的使用为:

1.使用Callback_Init初始化一个AEECallback实例,主要是关联Callback FunctionCallback Context Data

2.调用IShell_ResumeBREW内核Schedule一个AEECallback结构,BREW内部会将其放入BREWAEECallback队列,并置BREW_SIG,以便下次BREW能被正常调度到。

3.当ScheduleAEECallback还没有被调用时,可以调用Callback_Cancel取消它,BREW内部会从AEECallback队列中删除它。

4.正常情况下,下某次的BREW调度,就会从BREW AEECallback队列中提取出,并执行其Callback Fucntion,同时传递保存的Context Data

5.要查询某个AEECallback是否处于Schedule状态,可以调用Callback_IsQueued

6.注意,当应用退出时,BREW默认不会自动Cancel AEECallback,所以为了避免异常,App退出时,必须Cancel所有的Callback

原创粉丝点击