CircularBuffer高效实现(线程安全且不是线程安全的)
有人可以建议好的CircularBuffer实现吗? 我需要“非线程安全”和“线程安全”版本。 我希望以下操作:
- 在创建时提供缓冲区大小的能力
- 添加元素
- 迭代元素
- 迭代时删除元素
- 可能删除元素
我希望在速度和使用内存,平均和最差时间等方面高度优化实现。
我希望“非线程安全”实现非常快。 我希望“线程安全”实现很快,可能使用“无锁代码”进行同步,如果速度需要,可以有一些限制。
如果缓冲区太小而无法存储新的(添加的)元素,则可以静默覆盖现有元素或引发exception。
我应该使用disruptor.net吗?
添加链接到一个很好的示例Disruptor.NET示例
不是线程安全的:
System.Collections.Generic.Queue
线程安全:
System.Collections.Concurrent.ConcurrentQueue
要么
System.Collections.Concurrent.BlockingCollection (默认情况下在内部使用并发队列)
虽然从技术上讲你真的不应该使用术语“线程安全”。 它太含糊了。 第一个不是设计为由多个线程同时使用,其余的是。