程序包 cn.wjybxx.disruptor
package cn.wjybxx.disruptor
-
类说明表示屏障关联的生产者或消费者收到了特殊信号 - 其作用类似于中断。阻塞等待策略 - 可以达到较低的cpu开销。自旋等待策略 特征:极低的延迟,极高的吞吐量,以及极高的CPU占用。消费者序号屏障 1.消费者组DataProvider<T>数据提供者EventFactory<T>RingBuffer使用
EventFactory.newInstance()预创建对象预填充共享数据区。EventHandler<T>事件处理器 ps:你可以实现自己的事件处理器和事件处理接口,这里的接口仅做参考。事件生成器 事件生成器是Sequencer和DataProvider的集成,每一种实现通常都和数据结构绑定。Implementations translate (write) data representations into events claimed from theRingBuffer.多生产者的无界缓冲区 注意: 1.多线程消费者屏障多生产者模型下的序号生成器生产者序号屏障 1.单生产者和多生产的主要差别在空间分配上(序号分配上)。RingBuffer<E>与Disruptor的设计不同,我将RingBuffer类仅仅设计为数据结构。基于RingBuffer的序列生成器。序列,用于追踪RingBuffer和EventProcessor的进度,表示生产/消费进度。序号屏障序号阻塞器序号生成器 1.单线程消费者屏障单生产者序号分配器 (由用户保证不会并发的申请序号)睡眠等待策略。阻塞等待策略 - 可以达到较低的cpu开销。睡眠等待策略。消费者等待策略 PS:由于C#只要抛出异常就会导致性能下降(即使我们的异常实现为不捕获堆栈的),为保持代码一致,java端也使用sequence-1来表示超时。该策略在尝试一定次数的自旋等待(空循环)之后使用尝试让出cpu。