事件之消息队列
2016-03-06 18:04
225 查看
一.什么是消息队列
消息队列是用于两个任务之间多个消息的传递,比如任务A 可以连续告诉任务 B两个消息甚至更多:消息1:我发现好的种子资源啦;消息2:但这些种子不能被打开。其实消息队列和消息邮箱传递的内容是一样的,都是消息指针,唯一的区别是消息邮箱一次只能传递一条消息:我发现好的种子资源啦!(任务B此时心情很好),接着,又传来一条消息:但这些种子不能被打开。(任务B此时是崩溃的)。
理解上,可以简单认为,消息队列是邮箱数组,由多个邮箱组成.
二.消息队列的创建
1.声明一个消息队列
OS_EVENT *q_msg;
2.定义消息队列用来存消息指针的数组大小
void* Bls[100];
3.创建一个消息队列
q_msg=OSQCreate(Bls,100);
原型为OS_EVENT *OSQCreate (void **start, INT16U size)
4.向消息队列放消息指针
OSQPost(q_msg,(void*)Cls);
原型为INT8U OSQPost (OS_EVENT *pevent,void *pmsg)
5.从消息队列拿消息指针
dndm =OSQPend(q_msg,0,&err);
原型为void *OSQPend (OS_EVENT *pevent,
INT32U timeout, INT8U *perr)
消息队列是用于两个任务之间多个消息的传递,比如任务A 可以连续告诉任务 B两个消息甚至更多:消息1:我发现好的种子资源啦;消息2:但这些种子不能被打开。其实消息队列和消息邮箱传递的内容是一样的,都是消息指针,唯一的区别是消息邮箱一次只能传递一条消息:我发现好的种子资源啦!(任务B此时心情很好),接着,又传来一条消息:但这些种子不能被打开。(任务B此时是崩溃的)。
理解上,可以简单认为,消息队列是邮箱数组,由多个邮箱组成.
二.消息队列的创建
1.声明一个消息队列
OS_EVENT *q_msg;
2.定义消息队列用来存消息指针的数组大小
void* Bls[100];
3.创建一个消息队列
q_msg=OSQCreate(Bls,100);
原型为OS_EVENT *OSQCreate (void **start, INT16U size)
4.向消息队列放消息指针
OSQPost(q_msg,(void*)Cls);
原型为INT8U OSQPost (OS_EVENT *pevent,void *pmsg)
5.从消息队列拿消息指针
dndm =OSQPend(q_msg,0,&err);
原型为void *OSQPend (OS_EVENT *pevent,
INT32U timeout, INT8U *perr)
相关文章推荐
- 注册时无法写入数据库getSession().save(transientInstance)
- 多路复用的server模型
- 代码与组件(总纲)
- RTP时间戳
- OpenStack云计算快速入门之二:OpenStack安装与配置
- 蓝桥杯——十六进制转换十进制
- Hibernate之持久化对象
- 软件测试第一次作业
- MongoDB中对象反序列化的一个小问题
- 【MOOC EXP】Linux内核分析实验二报告
- 从零开始山寨Caffe·陆:IO系统(一)
- OpenStack云计算快速入门之一:OpenStack及其构成简介
- 一步一步教你安装openstack
- 学习进度条
- 四则运算
- hadoop2.7.2 HA搭建
- hdu acm 1565 方格取数(1)
- OpenStack 部署运维实战
- C语言之strlen和sizeof有什么区别
- 软件工程作业二