【发布时间】:2012-11-07 18:36:06
【问题描述】:
有人可以建议好的 CircularBuffer 实现吗?我需要“非线程安全”和“线程安全”版本。我期望以下操作:
- 能够在创建时提供缓冲区大小
- 添加元素
- 迭代元素
- 在迭代时删除元素
- 可能会删除元素
我希望实现在速度和使用的内存、平均和最差时间等方面得到高度优化。
我希望“非线程安全”的实现速度非常快。我希望“线程安全”实现速度很快,可能使用“无锁代码”进行同步,如果需要速度,可以有一些限制。
如果缓冲区太小而无法存储新(添加)元素,则可以静默覆盖现有元素或引发异常。
我应该使用disruptor.net吗?
将链接添加到一个很好的例子Disruptor.NET example
【问题讨论】:
-
是的,只要使用Disruptor.net 他们就有很好的效果。中断器是一个并发组件,用于在线程之间交换消息(生产者消费者)它针对高吞吐量和低延迟场景进行了优化。
-
如果中断器在“非线程安全”场景中有效?我可以只使用常规的“数组”并自己编写休息方法
-
当然,但你会建立自己的破坏者......我不会浪费我的时间......
-
如果您可以添加“非线程安全”破坏者场景的示例,那将非常有用。到目前为止,我找到了code.google.com/p/disruptor-net/wiki/CodeExamples,但它包含“多线程”版本
标签: c#