7.4 消息队列 由于消息邮箱里只能存放一条消息(部分RTOS邮箱消息功能不同,但消息队列,所有RTOS都表现一致)。通信双方至少有一方没有固定的执行周期,无法保证消息总能在下一个消息产生之前处理完毕,可能丢失消息,这种情况应该使用具有缓冲功能的消息队列,事实上消息队列最常用。 队列是一种标准线性结构,消息的发送、接收就是消息内容的入队或出队。在用户层面,发送消息就是将消息内容放入队列,接收消息时就是从队列中取出一条消息。 消息内容的结构和消息队列的长度由用户自行设置,消息长度按消息积压的最坏情况决定,太短了不保险,太长了浪费内存资源。队列是先进先出,但入队时可以选择放入队列头部还是尾部,对重要消息可以小范围的实现优先处理。 消息内容的要求和消息邮箱一样,必须确保接收消息的任务还能取出数据,不能使用临时变量;也不能使用大量数据块,可以动态申请内存,消息传递的是其指针,实现大数据的传输。
|