一,循环队列的概念
1. 队列的定义:一端插入元素, 另一端删除元素的线性表。
2. 队列的分类:循环队列(单向的顺序表),双向队列(双向链表),优先队列(有顺序的完全二叉树)。
3. 队列的特性:队列遵循先进后出的原则。队列的理解上,可以想象为一根左右开口的水管, 从左边进水,右边出水。我们只能从一端进, 另一端出。
二,循环队列的设计原理
循环队列的设计就像龟兔赛跑模式一样。生产者就是兔子,消费者就是乌龟,然后缓存就是环形跑道, 生产者向缓存不断写数据,消费者不断的读数据,保证数据的高效稳定。
设计注意事项:
1.兔子跑太快,领先乌龟一圈时,数据被覆盖。可以控制生产者的速度。(性能有点影响)
2.兔子跑完一圈时的处理, 缓存临界的处理。
3.多线程数据的安全处理。
三,循环队列示例讲解
四,关键实现代码:
1,读写之前计算buffer
int MyStream::CalReadBufSize(int nStartAddr, int