队列的特性
环形缓冲区buf
等待发送数据链表list
等待接收数据链表list
如何唤醒? 唤醒最高优先级的任务,同优先级下唤醒等待时间最长的数据
1、创建队列
QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize);
2、写队列
将数据写往队尾
/*
* 往队列尾部写入数据,如果没有空间,阻塞时间为 xTicksToWait
*/
BaseType_t xQueueSend(
QueueHandle_t xQueue,
const void *pvItemToQueue,
TickType_t xTicksToWait
);
/*
将数据写往队头
/*
* 往队列头部写入数据,如果没有空间,阻塞时间为 xTicksToWait
*/
BaseType_t xQueueSendToFront(
QueueHandle_t xQueue,
const void *pvItemToQueue,
TickType_t xTicksToWait
);
/*
3、读数据
BaseType_t xQueueReceive(QueueHandle_t xQueue,
void * const pvBuffer,
TickType_t xTicksToWait );
4、队列集(Queue Set)
作用:监控多个队列数据
- 要监测3个队列A、B、C,队列集的长度是:队列A的长度+队列B的长度+队列C的长度
- 建立联系:队列集跟3个队列建立联系,队列某个成员指向队列集
- 数据放置入队列中,同时handle也放入在队列集
- 读队列集(read queue set)
- 读队列