vxWorks消息队列示例


  
#include "vxWorks.h"    
#include "msgQLib.h"   
    
/* defines */    
#define MAX_MSGS (10)    
#define MAX_MSG_LEN (100)   
    
MSG_Q_ID myMsgQId;   
   
//任务3仅仅创建消息队列
task3(void)   
{   
	/* create message queue */   
    if ((myMsgQId = msgQCreate (MAX_MSGS, MAX_MSG_LEN, MSG_Q_PRIORITY)) == NULL)    
        return (ERROR);   
}   
    
//任务2完成接收,并显示
task2 (void)    
{    
    char msgBuf[MAX_MSG_LEN];   
    
    
    /* get message from queue; if necessary wait until msg is available */    
    if (msgQReceive(myMsgQId, msgBuf, MAX_MSG_LEN, WAIT_FOREVER) == ERROR)    
        return (ERROR);   
    
    /* display message */    
    logMsg ("Message from task 1:\n%s\n", msgBuf, 0,0,0,0,0);
}   
    
//任务1里延时5秒,验证【任务2】要等到消息到来时,才会有输出
#define MESSAGE "Greetings from Task 1"    
task1 (void)    
{    
	taskDelay (sysClkRateGet()*5);//延时5秒
	
   if (msgQSend (myMsgQId, MESSAGE, MAX_MSG_LEN, WAIT_FOREVER,    
                  MSG_PRI_NORMAL) == ERROR)    
        return (ERROR);    
   
    /* send a normal priority message, blocking if queue is full  
    if (msgQSend (myMsgQId, MESSAGE, sizeof (MESSAGE), WAIT_FOREVER,   
                  MSG_PRI_NORMAL) == ERROR)   
        return (ERROR);   
     */   
}   
    
void TestMsgQ(void)   
{   
	taskSpawn("t3",100,0,0x20000,(FUNCPTR)task3,0,0,0,0,0,0,0,0,0,0);   
	taskSpawn("t2",100,0,0x20000,(FUNCPTR)task2,0,0,0,0,0,0,0,0,0,0);   
	taskSpawn("t1",100,0,0x20000,(FUNCPTR)task1,0,0,0,0,0,0,0,0,0,0);   
}   
   
   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值