首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Disruptor 源码分析(五) 一个生产者和多个生产者的区别

2013-10-11 
Disruptor 源码分析(5)一个生产者和多个生产者的区别disruptor一个生产者和多个生产者的区别一个生产者的

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

热点排行