FreeRTOS 队列核心

队列主要有两个优点:

1、数据处理过程中有保护机制(开关中断)

2、允许未获取到数据(一般是标志位)的任务进入休眠状态,节约了cpu资源。

FreeRTOS的队列机制的核心为这三个部分:开关中断,环形缓冲区和链表。

开关中断保护了队列数据的处理过程;环形缓冲区本质上是一个长度固定的数组,用于队列的读写,环形结构是指读写的下标会做取模处理,不会发生越界;链表指的是队列数据结构中用于保存任务信息的两个列表,一个链表包含WaitingToReceive的任务,一个链表包含WaitingToSend的任务。当某个任务未读取到队列数据时,它可以先进入休眠状态,等到队列中出现数据后再被唤醒。

这样的任务进入休眠状态需要2个步骤:

1.将自己挂在WaitingToReceive列表当中

2.将自己从ready列表中移到delayed列表中,进入休眠状态。

写队列的过程与读队列类似,不再赘述。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值