一、概念:
一个队列只允许任务间传递的消息为同一数据类型,如果需要任务之间传递不同数据类型时,就需要使用队列集。
队列集用于多个队列和信号量的监听,其中不管哪一个消息到来,都可以让任务退出阻塞状态。若不使用队列集,而单独创建多个队列或信号量,有可能会导致任务的阻塞。
二、队列集的相关API函数
1、队列集的创建:
QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength );
2、队列集中添加队列
BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore ,
QueueSetHandle_t xQueueSet );此函数用于往队列集中添加队列,要注意的时,队列在被添加到队列集之前,队列中不能有有效的消息。
3、队列集中移除队列
BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore , QueueSetHandle_t xQueueSet );
此函数用于往队列集中添加队列,要注意的时,队列在被移除到队列集之前,队列中不能有有效的消息。
4、获取队列集中有有效消息的队列
QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
TickType_t const xTicksToWait )