1 / 4
文档名称:

最新精品最新精品1 实验目的.pdf

格式:pdf   页数:4页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最新精品最新精品1 实验目的.pdf

上传人:908163988 2014/12/31 文件大小:0 KB

下载得到文件列表

最新精品最新精品1 实验目的.pdf

文档介绍

文档介绍:实验四消息队列的使用
1 实验目的

2 实验内容
在实验一建立的 project 中,创建 2 个任务,任务 1 向任务 2 发送一条消息,
任务 2 将在控制台上输出。观察运行结果。
3 实验设备及工具
:
a) PC 机
:
a) PC 机操作系统 Windows2000 或 windowsXP
b)
4 实验原理
在单 CPU 中,VxWork 的多任务通信的主要机制是消息队列。消息队列允许
以 FIFO 或基于优先级方式排队消息,消息的数目可变,消息的长度可变。任何
任务都可以向消息队列发送消息,也可以从消息队列接收消息。多个任务允许从
同一个消息队列收发消息。但是,两个任务间的双向通信通常需要两个消息队列,
各自用于一个方向。
VxWorks 消息队列的创建、删除、发送和接收调用如下:

MSG_Q_ID msgQCreate ( int maxMsgs, int maxMsgLength, int options);
/* create and initialize a message queue*/
STATUS msgQDelete ( MSG_Q_ID msgQId ); /* delete a message queue*/
STATUS msgQSend ( MSG_Q_ID msgQId, char *buffer, UINT nBytes, int timeout,
int priority );
/* send a message to a message queue*/
int msgQReceive(MSG_Q_ID msgQId, char *buffer, UINT maxNBytes, int timeout );
/* receive a message from a message queue*/

消息队列库允许消息按照 FIFO 方式排队,但是也有一个例外:存在两个优
先级,优先级最高的消息排在队列的头部。
要创建一个消息队列可以调用 msgQCreate()。任务调用 msgQSend()将消息发
送到一个消息队列,如果没有任务在等待该队列的消息,那么这条消息增加到该
队列的消息缓冲中;如果有任务在等待,那么该消息立即提供给第一个等待的任
务。
任务如果需要从一个消息队列接收一条消息,它应该调用 msgQReceive()。
如果该消息队列中已有消息可用,那么队列中的第一条消息立即出队,并提交给
该任务;如果没有消息可用,那么该任务阻塞,并加入到等待该消息的任务队列
中。等待任务队列可以按两种方式排队:基于任务优先级或基于 FIFO 方式