Disruptor 源码分析(5) 一个生产者和多个生产者的区别
disruptor一个生产者和多个生产者的区别
一个生产者的时候用的是SingleProducerSequencer,多个的时候用的是MultiProducerSequencer.
上一篇文章说到了他们在isAvailable方法上的不同,
SingleProducerSequencer直接用cursor去判断,应为只有一个生产者的cursor,所以是没问题的.
public long get() { return UNSAFE.getLongVolatile(paddedValue, VALUE_OFFSET); } public void set(final long value) { UNSAFE.putOrderedLong(paddedValue, VALUE_OFFSET, value); }可以看到Sequence类是线程安全的,在MultiProducerSequencer 多个生产者的情况下必须要保障线程安全的.
但是说了这么多,感觉disruptor不可能会出现多个生产者.为什么呢.
在RingBuffer的构造函数中只能传入一个Sequencer对象,一个对象怎么多个生产者.
而且Sequencer不是线程类,完全没办法多线程.
难道是我哪里没看明白吗?