CircularBuffer高效实现(线程安全且不是线程安全的)

有人可以建议好的CircularBuffer实现吗? 我需要“非线程安全”和“线程安全”版本。 我希望以下操作:

  • 在创建时提供缓冲区大小的能力
  • 添加元素
  • 迭代元素
  • 迭代时删除元素
  • 可能删除元素

我希望在速度和使用内存,平均和最差时间等方面高度优化实现。

我希望“非线程安全”实现非常快。 我希望“线程安全”实现很快,可能使用“无锁代码”进行同步,如果速度需要,可以有一些限制。

如果缓冲区太小而无法存储新的(添加的)元素,则可以静默覆盖现有元素或引发exception。

我应该使用disruptor.net吗?

添加链接到一个很好的示例Disruptor.NET示例

不是线程安全的:

System.Collections.Generic.Queue

线程安全:

System.Collections.Concurrent.ConcurrentQueue

要么

System.Collections.Concurrent.BlockingCollection (默认情况下在内部使用并发队列)

虽然从技术上讲你真的不应该使用术语“线程安全”。 它太含糊了。 第一个不是设计为由多个线程同时使用,其余的是。