1

LMX 破坏者的屏障如何工作?我确实了解如何将中断器与 DSL 一起使用。但是我找不到关于障碍或序列障碍如何工作的良好参考。

例如,我找到了以下链接,但不确定如何使用屏障数据结构。 http://mechanitis.blogspot.com/2011/08/dissecting-disruptor-why-its-so-fast.html

例如,new BatchEventProcessor() 接受一个 SequenceBarrier。为什么?以及如何创建一个。

4

1 回答 1

3

首先 - 内存屏障是 CPU 架构原语;SequenceBarrier 是 Disruptor 中的一个实现类。我将尝试涵盖两者。

内存屏障 - 允许软件向硬件提供指令,即在某个点 X 之前的所有指令必须在 X 之前完成。这是因为 CPU 提供了乱序执行优化。有关更多详细信息,最好阅读这篇论文 - 请参阅Memory Barriers: a Hardware View for Software Hackers

SequenceBarrier 是 Disruptor 中的一个实现类;一般来说,它是 Disruptor 的一部分,您不需要在 Disruptor 之外使用它。它实际上在概念上执行与内存屏障类似的功能——它防止消费者在环形缓冲区上领先于发布者。请参阅github 上的 SequenceBarrier

于 2013-06-26T22:16:02.840 回答