找回密码
 注册
搜索
查看: 1007|回复: 7

[讨论] x_req和xxx_rsp的执行关系

[复制链接]
发表于 2009-9-9 17:22:14 | 显示全部楼层 |阅读模式
他们的执行顺序 是不 如下:

mmi向l4发出xxx_req之后继续执行后面的mmi代码;
L4处理完req之后通知mmi,mmi在当前位置暂停,然后执行回调xxx_rsp


上面的理解对么?如果对的话就意味着xxx_req和xxx_rsp是异步的。

我现在的情况是:想让mmi执行完xxx_req之后等待xxx_rsp被调用?该用什么样的策略呢?我试了一下
while (xxxx) ; 来等待,但会一直死在这里。

kal_sleep_task()可以么?
发表于 2009-9-10 09:34:55 | 显示全部楼层
req是MMI想L4发送请求(要么该请求中包含回调函数指针要么通过setproxxxx的函数设定对应rsp消息的回调函数),L4处理完后会将rsp返回给MMI,mmitask会在while中遍历消息队列将调用对应的函数执行.
点评回复

使用道具 举报

 楼主| 发表于 2009-9-10 09:42:47 | 显示全部楼层
以下是引用thinkstone在2009-9-10 9:34:55的发言:
mmitask会在while中遍历消息队列将调用对应的函数执行.


这个遍历和发出req的代码是异步执行的吧?也就是说,MMI发出req之后,代码继续往后走(thread 1),而同时后台(thread 2)会遍历消息队列,发现rsp则暂停thread 1,执行回调,结束后resume thread 1。是如此么?
点评回复

使用道具 举报

发表于 2009-9-10 17:09:09 | 显示全部楼层
用死循环等待会导致底层消息(包括你发出的请求)得不到处理,肯定会出问题的。
用sleep task 的方式实现,请问你如何确定sleep时间呢?

如果你是想在你发出req后到收到rsp之间不让用户界入的话,可以通过等待界面来处理。
点评回复

使用道具 举报

发表于 2009-9-10 17:13:35 | 显示全部楼层
楼主可以去理解下callback的机制,便于理解这个问题
点评回复

使用道具 举报

发表于 2009-9-26 23:40:46 | 显示全部楼层
你把mmi挂起了,它怎么处理那个rsp消息啊?可以试试通过其他任务如med 来发送接受消息,然后在mmi中循环判断
点评回复

使用道具 举报

发表于 2009-12-20 11:33:21 | 显示全部楼层
同意四楼
点评回复

使用道具 举报

发表于 2009-12-21 11:22:07 | 显示全部楼层
MMI向L4发送消息REQ,之前会用消息注册个回调函数,当前MMI任务执行完毕,会顺序执行到L4任务,L4任务收到消息,执行注册得函数--RSP,根据运行结果会做相应得处理,或继续执行或再次REQ
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-6 19:08 , Processed in 0.048296 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表