环形队列
https://www.cnblogs.com/ljz111/p/15191659.html
点开上面链接,先熟悉一下什么是环形队列,以及它的一种实现方式;
其算法要领由五部分组成:队首(front),队尾(rear),队空,队满,有效元素个数(itemNum)
front:表示队列的第零个元素的位置,item = arr[front],初始值为0;
rear:表示队列最后一个元素的下一个位置,初始值也是0;
isEmpty: rear==front
假设队列最大长度为maxSize
isFull: (rear+1)%maxSize==front
itemNum:(rear+maxSize-front)%maxSize
其优点有一下三点:
1.保证先进先出
2.队列空间可以重复利用
3.为多线程通信提供解决方案
在生产者消费者模型中,producer只需要把数据add到环形队列,consumer只需要从队列里拿数据即可,不存在任何锁或者等待,这样便实现了多线程通信的问题。