环形队列

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只需要从队列里拿数据即可,不存在任何锁或者等待,这样便实现了多线程通信的问题。

posted @ 2021-12-30 23:53  骑驴晒太阳  阅读(139)  评论(0)    收藏  举报