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

时间:2012-11-07 18:36:06

标签: c#

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

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

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

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

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

我应该使用disruptor.net吗?

添加指向好示例Disruptor.NET example

的链接

1 个答案:

答案 0 :(得分:-4)

不是线程安全的:

System.Collections.Generic.Queue

线程安全:

System.Collections.Concurrent.ConcurrentQueue

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

Although technically you really shouldn't use the term "thread safe".这太模糊了。第一个不是设计为由多个线程同时使用,其余的是。