首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > VxWorks >

关于msgQSend()的疑义

2012-12-31 
关于msgQSend()的疑问此函数定义如下:STATUS msgQSend (MSG_Q_ID msgQId, char *buffer, UINT nBytes, int

关于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来完成任务间的通信。

热点排行