您的位置:首页 > 其它

事件之消息队列

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  消息队列-ucosi