vxworks任务间大数据量通讯,用消息队列是否妥当?

celerylxq 2012-04-01 03:22:52
如题,vx的任务间通信,如果采用消息队列来传输大量的数据(比如每包1500个字节),是否可行?

看了vx中对于任务通信的介绍,理解了一下它的传输过程,基本上是发送时将数据包拷到信息队列中,接收时再拷到接收缓存中【这个过程和开一个全局链表来保存数据,在接收时将全局链表中的数据拷到接收缓存中没什么不同】可是运行时发现有的会发送失败,消息队列开了20*1500的空间,也不小,不知道为什么会这样?

有人提到说大数据量传输不易使用消息队列,但没给出别的解释,请大侠们帮我指点下,为什么不宜传大数据量?
...全文
356 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
celerylxq 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

在传输较小的数据块时,效率较高,但在传输大的数据时,不如共享内存高效。另外,消息队列不能指定接受者,消息队列不支持广播机制,因此一个任务所发出的信息不能被许多任务所接收。


使用消息队列作为任务传送数据量比较小的数据时的通信机制是比较理想的,一般不会产生死锁问题。
[/Quote]
谢谢谢谢!长知识了。
giant1st 2012-04-17
  • 打赏
  • 举报
回复
在传输较小的数据块时,效率较高,但在传输大的数据时,不如共享内存高效。另外,消息队列不能指定接受者,消息队列不支持广播机制,因此一个任务所发出的信息不能被许多任务所接收。


使用消息队列作为任务传送数据量比较小的数据时的通信机制是比较理想的,一般不会产生死锁问题。
henni386 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 2 楼 的回复:
大数据量传输使用消息队列效率应该不会太高。最好的办法应该是共享内存,使用指针方式传递要好的多。

谢谢,目前就采用了这种方式,只是为什么使用消息队列传输大数据量时效率不高,还是不太明白,总觉得共享内存的方法没多大优越性
[/Quote]

因为消息队列的方式,在发送和接收的时候,都要进行数据的拷贝,这样在大量数据传输时的效率就很低了。而共享内存就不需要.......这就是效率低的原因。
dadi_0189 2012-04-11
  • 打赏
  • 举报
回复
用哪种方式都可以啊,消息的话可以把数据缓存指针放到消息中进行传递,当然用全局数组也行。
celerylxq 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
大数据量传输使用消息队列效率应该不会太高。最好的办法应该是共享内存,使用指针方式传递要好的多。
[/Quote]
谢谢,目前就采用了这种方式,只是为什么使用消息队列传输大数据量时效率不高,还是不太明白,总觉得共享内存的方法没多大优越性
jackydi 2012-04-01
  • 打赏
  • 举报
回复
大数据量传输使用消息队列效率应该不会太高。最好的办法应该是共享内存,使用指针方式传递要好的多。
guolisong 2012-04-01
  • 打赏
  • 举报
回复
可以传送大流量数据的啊 而且使用消息队列不用你自己去处理同步和互斥的问题 挺好用的

2,184

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧