读书人

Disruptor 源码分析(五) 一个生产者

发布时间: 2013-10-11 14:52:39 作者: rapoo

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不是线程类,完全没办法多线程.
难道是我哪里没看明白吗?

读书人网 >开源软件

热点推荐