我们有一个具有固定长度数组的 Disruptor 实现。是否可以实现一个不依赖于该数组,而是包含(可能是自描述的)可变长度对象列表的模式版本。例如,Protobuf 对象的 Ringbuffer?
我知道固定长度数组用于“预分配”步骤,但我认为可以用一个或多个对象池来近似该步骤。
我们有一个具有固定长度数组的 Disruptor 实现。是否可以实现一个不依赖于该数组,而是包含(可能是自描述的)可变长度对象列表的模式版本。例如,Protobuf 对象的 Ringbuffer?
我知道固定长度数组用于“预分配”步骤,但我认为可以用一个或多个对象池来近似该步骤。
Java 版本的中断器中的环形缓冲区是对对象的任何引用数组。您可以通过您创建的 EventFactory 实例将您想要的任何对象放入其中。
绝对有可能实现一个不受对象数组支持的破坏器版本,但它不会是高性能的。在 LMAX Exchange Disruptor 的设计和实施中投入了大量的思想和机械的同情。
本质上,环形缓冲区是一个预先分配的对象池。根据我的经验,我从来不用担心在任何现实世界的代码中直接管理环形缓冲区的资源。必要时干扰器会自动施加背压。
该库提供了一个很好的 DSL 来为您的应用程序构建依赖关系图,并且基本上免费为您提供并行性。