如何检查事件是否已经在disruptor ringbuffer中

时间:2018-03-08 06:32:34

标签: java disruptor-pattern

我的disruptor / ringbuffer应用程序有多个生产者和多个工人。如果事件不在RingBuffer中,则程序员将事件放入RingBuffer。对于事件,工作人员根据事件中的字符串id查询远程状态,并在状态完成时清除事件。

我的问题是,是否可以检查事件是否已经在缓冲区中具有可接受的时间复杂度(例如,小于O(环大小))?

事件如下:

class MyEvent {    字符串ID; //唯一身份。    布尔状态; //如果为true,那么worker将删除它。 }

谢谢

1 个答案:

答案 0 :(得分:0)

一旦事件准备就绪并在环形缓冲区中可用,它将把您带入已注册的工作处理程序实现“ onEvent()”方法。对于您的情况,如果要添加条件检查,则可以在事件处理程序或工作处理程序中进行。基本上,处理程序是为这种逻辑设计的。您需要检查每个事件的时间复杂度为O(n),一旦事件被检查,您可以根据逻辑将其简单地放回相同的环形缓冲区。