uc/os-ii消息队列
来源:互联网 发布:mac下画流程图的工具 编辑:程序博客网 时间:2024/04/29 16:56
使用消息队列可以在任务之间传递多条消息。消息队列由三个部分组成:事件控制块、消息队列和消息。
消息队列的数据结构如下图所示。从图中可以看到,消息队列相当于一个共用一个任务等待列表的消息邮箱数组,事件控制块成员OSEventPtr指向了一个叫做队列控制块(OS_Q)的结构,该结构管理了一个数组MsgTbl[ ],该数组中的元素都是一些指向消息的指针。
为了对消息指针数组进行有效的管理,μC/OS-II把消息指针数组的基本参数都记录在一个叫做队列控制块的结构中,其中可以移动的指针为OSQIn和OSQOut,而指针OSQStart和OSQEnd只是一个标志(常指针)。当可移动的指针OSQIn或OSQOut移动到数组末尾,也就是与OSQEnd相等时,可移动的指针将会被调整到数组的起始位置OSQStart。也就是说,从效果上来看,指针OSQEnd与OSQStart等值。于是,这个由消息指针构成的数组就头尾衔接起来形成了一个如图所示的循环的队列。
队列控制块的源码如下:
typedef struct os_q { /* QUEUE CONTROL BLOCK */ struct os_q *OSQPtr; /* Link to next queue control block in list of free blocks */ void **OSQStart; /* Pointer to start of queue data */ void **OSQEnd; /* Pointer to end of queue data */ void **OSQIn; /* Pointer to where next message will be inserted in the Q */ void **OSQOut; /* Pointer to where next message will be extracted from the Q */ INT16U OSQSize; /* Size of queue (maximum number of entries) */ INT16U OSQEntries; /* Current number of entries in the queue */} OS_Q;
µC/OS-Ⅱ提供了九种对消息队列进行操作的函数,函数所属文件是OS_Q.C。
上述函数与消息邮箱的操作函数类似,不详细分析。
0 0
- uc/os-ii消息队列
- UC/OS II 消息队列
- uC/OS-II学习笔记 消息队列
- uC/OS-II消息队列及操作
- uC/OS-II 学习笔记:消息队列
- UC/OS II消息队列管理实例
- uC/OS-II 学习笔记之:消息队列
- UC/OS-II学习笔记之消息队列使用
- uC/OS-II 函数之消息队列相关函数
- uc/os-II 分析(10)--消息队列
- uc/os-ii消息邮箱
- UC/OS II 消息邮箱
- uC/OS-II 学习笔记之:信号量、消息邮箱、消息队列之间的使用区别
- uC/OS-II中的消息邮箱
- uC/OS-II中的消息邮箱
- uC/OS-II消息邮箱及其操作
- uC/OS-II 学习笔记:消息邮箱
- uc/os-II之向消息邮箱发送消息
- UIView/视图&&UIImageView/图片视图
- php 一个表单里有两个submit, 有效区分
- 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 (续)
- Local Variables
- android-async-http AsyncHttpClient介绍
- uc/os-ii消息队列
- linux下memcached安装以及启动
- ATL中的RGS文件介绍
- java 数组变量的深刻理解
- 四大会计事务所薪酬待遇及发展各个方面大比拼
- iOS原生QQ第三方登录
- mysql 使用游标进行删除操作的存储过程
- iOS block的用法
- bufferevent_write以及bufferevent工作流程探究