实现可变尺寸的环缓冲区



我已经了解了拥有环缓冲区背后的想法,以及它如何在此过程中不必转移元素。但是,我很好奇,最好使用线程安全的可变长度缓冲区,并提供与环缓冲区相似的优势?我们可以在达到容量时将尺寸加倍,并让一个线程在静音中进行复制吗?这只是可变大小的缓冲区是否只是实现为线程安全的队列?最好的方法是什么,这类型的并发读/写入访问的替代解决方案的优点和缺点是什么?

对于多线程生产者/消费者应用程序,单个圆形缓冲区通常会在需要增长时停止成为一个好主意。

我通常会切换到无锁的单连接的单使用FIFO缓冲区固定尺寸的列表,未使用的缓冲区可以回收在无锁的堆栈中。

从这里来的非博克队列很简单:

链接列表可能会更好,因为扩展环缓冲区时不需要复制。

最新更新