简介
FreeRTOS中的队列是一种用于实现【任务与任务】,【任务与中断】以及【中断与任务】之间的通信机制。
此外,任务从队列读数据或者写入数据到队列时,都可能被阻塞。这个特性使得任务可以被设计成基于事件驱动的运行模式,大大提高了CPU的执行效率。队列是实现FreeRTOS中其他特性的基础组件,像软件定时器,信号量,互斥锁都是基于队列而实现的。
队列的基本特性
队列是一种FIFO操作的数据结构,入队操作就是把一个新的元素放进队尾(tail),出队操作就是从队头(front)取出一个元素。FreeRTOS中也支持把一个元素放到队头的操作,这个操作会覆盖之前队头的元素。

备份入队策略
队列在设计的时候,主要有两种元素入队存储策略:Queue by copy 和 Queue by reference。FreeRTOS的队列使用的是Queue by copy存储策略,考虑到这种策略实现起来更加简单,灵活,且安全。
- Queue by copy:数据入队的时候,队列中
本文详细介绍了FreeRTOS中的队列机制,包括队列的基本特性、入队出队策略、阻塞读写以及如何处理来自多个数据源的队列数据。队列作为任务间通信的重要工具,支持FIFO操作,允许任务在等待队列有空间或数据时阻塞,提高了CPU效率。同时,队列的创建、元素的存储策略和大型数据的处理方法也得到了阐述。
订阅专栏 解锁全文
1万+





