前言
上一篇文章介绍了PacketQueue,本文介绍FrameQueue。
FrameQueue结构体
- FrameQueue结构体,持有queue数组,是基于环形队列实现的;
- rindex、windex、size、max_size和等待唤醒机制获取读写位置,利用环形队列最大限度节约了空间;
- 默认队列大小为16,最后由max_size = Math.min(max_size,FRAME_QUEUE_SIZE)来决定最大的元素个数;
- 其中
keep_last
表示是否保留上一个可读节点,在frame_queue_next
中起作用,如果保留,则会设置rindex_shown为1,表示上一个结点是已读的。即队列中将会存储两个节点,上一个已读的和现在rindex指向的未读结点。
#define FRAME_QUEUE_SIZE