vxworks任务间大数据量通讯,用消息队列是否妥当?
如题,vx的任务间通信,如果采用消息队列来传输大量的数据(比如每包1500个字节),是否可行?
看了vx中对于任务通信的介绍,理解了一下它的传输过程,基本上是发送时将数据包拷到信息队列中,接收时再拷到接收缓存中【这个过程和开一个全局链表来保存数据,在接收时将全局链表中的数据拷到接收缓存中没什么不同】可是运行时发现有的会发送失败,消息队列开了20*1500的空间,也不小,不知道为什么会这样?
有人提到说大数据量传输不易使用消息队列,但没给出别的解释,请大侠们帮我指点下,为什么不宜传大数据量?
[解决办法]
大数据量传输使用消息队列效率应该不会太高。最好的办法应该是共享内存,使用指针方式传递要好的多。
[解决办法]
用哪种方式都可以啊,消息的话可以把数据缓存指针放到消息中进行传递,当然用全局数组也行。
[解决办法]
在传输较小的数据块时,效率较高,但在传输大的数据时,不如共享内存高效。另外,消息队列不能指定接受者,消息队列不支持广播机制,因此一个任务所发出的信息不能被许多任务所接收。
使用消息队列作为任务传送数据量比较小的数据时的通信机制是比较理想的,一般不会产生死锁问题。