3134|4

54

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

raw-os中的消息队列 [复制链接]

消息队列中的接收消息函数
raw_queue_receive(RAW_QUEUE *p_q, RAW_U32 wait_option, RAW_VOID  **msg)
msg为什么要用二级指针,这样做有什么好处?

最新回复

可以是这样认为的。但是绝大部分情况来说,接收消息的任务是不会改变消息的,他只是被动去接受。消息一般都是全局变量,或者是堆空间里的,栈空间里的变量需要小心周期会不会消失。 建议你上VC 去写代码测试吧,有时实践一下可能胜过千言万语。  详情 回复 发表于 2013-1-29 10:16
点赞 关注

回复
举报

420

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
如你所见RAW_VOID  **msg, 是一个两级指针,两级指针msg 的意思是,指针的地址,也就是消息的地址,消息本身是一个地址,地址也就是指针,那指针的地址必须是两级指针。

raw_queue_receive 接收到消息后会去填充*msg, 具体的可以参看代码。
建议参看vc 模拟代码里面的queue_test2.c 来加深理解。
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
现在有这样一种情况:
一个任务中定义了一个变量va,它在该任务的堆栈中。然后通过raw_queue_end_post()将va的地址放到消息队列中。
另一个任务中用raw_queue_receive()来接收消息,并将地址放在msg中。
现在,我对 *msg 赋值的话,它就会改变前一个任务中的 va 的值,也就是改变了另一个任务中堆栈的内容。

我这样说对吗?
 
 
 

回复

420

帖子

0

TA的资源

纯净的硅(初级)

4
 
可以是这样认为的。但是绝大部分情况来说,接收消息的任务是不会改变消息的,他只是被动去接受。消息一般都是全局变量,或者是堆空间里的,栈空间里的变量需要小心周期会不会消失。

建议你上VC 去写代码测试吧,有时实践一下可能胜过千言万语。
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

5
 
嘎嘎,直接跟作者联系就是不一样
谢谢txj了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表