Vxworks 进程间通信1--消息队列
来源:互联网 发布:哪个软件可以租到豪车 编辑:程序博客网 时间:2024/05/29 02:19
Vxworks 进程间通信1--消息队列
一.概念:
1.消息队列用于Task之间传递信息。
2.多个任务向同一个消息队列发送消息或接收消息。
3.ISR可以用NO_WAIT方式发送消息。
二.控制函数:
1. msgQCreate
[c-sharp] view plaincopy- MSG_Q_ID msgQCreate
- (
- int maxMsgs, /* 消息队列长度(最大消息个数) */
-
- int maxMsgLength, /* 消息队列中消息的最大长度*/
-
- int options /* FIFO/PRIORITY 等待Task排队方式*/
- )
[c-sharp] view plaincopy
- MSG_Q_ID msgQCreate
- (
- int maxMsgs, /* 消息队列长度(最大消息个数) */
- int maxMsgLength, /* 消息队列中消息的最大长度*/
- int options /* FIFO/PRIORITY 等待Task排队方式*/
- )
2. msgQSend
[c-sharp] view plaincopy
- STATUS msgQSend
- (
- MSG_Q_ID msgQId, /* 消息队列ID */
- char *buffer, /* 指向要发送的消息的指针*/
- UINT nBytes, /* 消息长度*/
- int timeout, /* 超时时间(tick)/no-wait/forever */
- int priority /* MSG_PRI_NORMAL 或MSG_PRI_URGENT */
- )
3.msgQReceive
[c-sharp] view plaincopy
- int msgQReceive
- (
- MSG_Q_ID msgQId, /* 消息队列ID */
- char *buffer, /* 指向接消息的收缓冲的指针*/
- UINT maxNBytes, /* 接收缓冲的字节数*/
- int timeout /* 超时时间(tick)/no-wait/forever */
- )
4. msgQDelete
[c-sharp] view plaincopy
- STATUS msgQDelete
- (
- MSG_Q_ID msgQId /* 需要删除的消息队列的ID */
- )
一旦msgQDelete()操作执行完毕,阻塞在该消息队列上的Task,包括阻塞在发送队列、接收队列上的Task,都将被唤醒(Unpend),而消息队列的ID从此不再有效。
三.建议:
1.为每一个Task创建专用MsgQ。
2.所有需发给该Task的Message都送到唯一MsgQ。
3.因为消息队列有Copy & MaxLength的特性,所以消息队列中我们可以只存放指针。
- Vxworks 进程间通信1--消息队列
- 进程间通信--消息队列
- 进程间通信--消息队列
- 进程间通信--消息队列
- 进程间通信--消息队列
- LINUX进程通信--消息队列
- Linux进程通信-消息队列
- 进程间消息队列通信
- 进程间通信:消息队列
- 进程间通信--消息队列
- 进程间通信-消息队列
- 进程间通信-消息队列
- 进程间通信----消息队列
- 进程间通信-消息队列
- 进程间通信-消息队列
- 消息队列 进程间通信
- 进程间通信---消息队列
- 进程间通信--消息队列
- VC6工程打不开
- HDU 2087 strstr
- 利用BeanUtils在对象间复制属性
- gdb
- 分享45个android实例源码,很好很强大.收藏吧
- Vxworks 进程间通信1--消息队列
- 流程图培训讲义
- VxWorks进程间通信2 -- 信号量
- C语言 最快的两数交换
- 生活管理实用技能
- 矩阵链乘问题——求最小乘数
- 嵌入式操作系统内核原理和开发(cpu的那些事)
- VxWorks进程通信0 -- 任务管理
- 执行带有输出参数的存储过程