当前位置: 代码迷 >> VxWorks >> 关于msgQSend()的疑义
  详细解决方案

关于msgQSend()的疑义

热度:4566   发布时间:2013-02-26 00:00:00.0
关于msgQSend()的疑问
此函数定义如下:
STATUS  msgQSend (MSG_Q_ID msgQId, char *buffer, UINT nBytes, int timeout, int priority);

其中第一个参数指定了MSG QUEUE的ID, 我的疑问是这个函数是用来发送消息到某个消息队列,那么如果有很多task,每个task都有消息队列,那么一个task调用此函数向另外的task发送消息的时候怎么指定此消息是发送到那个task的消息队列的呢? 难道msg queue id在整个系统中是唯一的?

------解决方案--------------------------------------------------------
是唯一的

------解决方案--------------------------------------------------------
可以创建多个msgQId,msgQId和任务是没有直接对应关系的,如果要通过消息来实现任务间的通信,只需要两个任务成对应的使用队列就可以了。比如创建一个msgQId :TASK1_ID ,指定是给task1使用,则task1中只调用msgQReceive从TASK1_ID中收消息就可以了。而其他所有任务都可以调用msgQSend 往TASK1_ID该队列中发送消息,这些消息都是发给task1来完成任务间的通信。

  相关解决方案