prozm 发表于 2012-2-2 15:08:30

正在看RTT,有一事不明,RTT的邮箱可以接收多个消息缓冲着,那邮箱和消息队列还有什么区别

之前看的是UCOS,上面说的都是消息队列就是数组版本的邮箱,大致是这个意思,现在邮箱有多则消息了,就不清楚区别了,受了UCOS的老思想了,各位不要见笑

tiancaigao7 发表于 2012-2-2 18:41:32

个人理解,邮箱发送的事消息的指针,而消息队列直接发送的是消息本身。

prozm 发表于 2012-2-2 21:42:39

回复【1楼】tiancaigao7 天才杨威利
个人理解,邮箱发送的事消息的指针,而消息队列直接发送的是消息本身。
-----------------------------------------------------------------------

谢谢回复,我一开始想想感觉也只能这样想了,但是看了一下接口函数用的是指针,想想传的应该是指针,但你这么一说又回过去看函数,感觉也有可能传的是实际数据,贴一下原例程
46 while (1)
47 {
48 for (i = 0; i < 10; i++)
49 {
50 buf = '0' + i;
51
52 rt kprintf("thread2: send message - %s\n", buf);
53 /* 发送消息到消息队列中*/
54 result = rt mq send(&mq, &buf, sizeof(buf));
55 if ( result == -RT EFULL)
56 {
57 /* 消息队列满, 延迟1s时间*/
58 rt kprintf("message queue full, delay 1s\n");
59 rt thread delay(100);
60 }
61 }
62
63 /* 延时10个OS Tick */
64 rt thread delay(10);
65 }

如果真的传输的是数据,那这个例程等于一次传送了10个消息队列了??忘高手指教一下

prozm 发表于 2012-2-3 15:08:39

自己顶一下,知道的麻烦给个说法

ffxz 发表于 2012-2-3 16:57:18

很显然,邮箱每次只能是4个字节
消息队列则长度没有这个限制

另外邮箱有发送满时阻塞功能
页: [1]
查看完整版本: 正在看RTT,有一事不明,RTT的邮箱可以接收多个消息缓冲着,那邮箱和消息队列还有什么区别