30

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

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

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

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

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

我应该使用disruptor.net 吗?

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

4

1 回答 1

-8

不是线程安全的:

System.Collections.Generic.Queue

线程安全:

System.Collections.Concurrent.ConcurrentQueue

或者

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

尽管从技术上讲,您确实不应该使用“线程安全”一词。 简直太模棱两可了。第一个不是为多个线程同时使用而设计的,其余的都是。

于 2012-11-07T18:40:00.253 回答