文章目录
- xQueueReceive
- xQueueReceiveFromISR
- xQueuePeek
- xQueuePeekFromISR
xQueueReceive
从队列中接收一个数据项。
和发送数据的过程有点类似,不逐行解释代码了。
vTaskPlaceOnEventList
把当前任务放进队列的等待链表的同时也会把当前任务从就绪列表移除,加入全局等待列表,从就绪态改为阻塞态,直到队列发送唤醒。
xQueueReceiveFromISR
从中断服务例程中从队列接收一个数据项。
同样的没有阻塞。
当队列被锁定时,如果从中取出数据,不会立即唤醒等待发送的任务,而是通过增加一个锁计数来记录这个操作,等队列解锁时prvUnlockQueue
再统一唤醒等待发送的任务。
xQueuePeek
从队列中“查看”一个数据项的内容,但不移除该数据项 。
类似于 xQueueReceive()
,但不会减少队列中的消息数量。
Peek 不适用于信号量。
xQueuePeekFromISR
从中断服务例程中“查看”队列中的一个数据项。
不能阻塞 ,如果队列为空,直接返回失败。