请教Banq关于Disruptor多消费者问题

Banq兄,拜读您文章已很久,关于您上次提到的Disruptor并发编程中,有些疑问请教一下:


1.多消费者问题.例如Disruptor中支持多生产者对环型队列进行写入,那是否能有多个消费者进行同一操作,例如:第一消费都读取环型队列中的1-6.第二消费都读取环型队列中的2-12.两个消费都对读取的数据进行同样的处理.来提升输出量.?


[该贴被Go0ogle于2012-11-28 17:21修改过]

RingBuffer主要用来在两个线程之间传递数据,一个线程不断放入数据,其他线程不断读取,只能读刚放入的数据,读的太早或太迟,要么数据没有被放入,要么已经覆盖了。
[该贴被banq于2012-11-29 07:05修改过]

@banq
非常感谢您的解答,但还有些疑问.

1.您刚才所指的一个线程不断放入数据,是指单生产者的情况吗?那如果我是多生产者的情况下,是不是会有多个线程并行写入数据到RingBuffer?

2."其它线程不断读取"是一个线程,还是多个线程去读取?如果是多个线程去读取(多消费者情况),有没有可能通过设置让第一个线程去读取1~6个SLOT,然后第二个线程跳过1-6,去读取7-12个SLOT,(总个12个SLOT).

3.综上所述:我想实现的场景是,两个生产都负责写入数据到RingBUffer中.两个消费者负责将RingBuffer中的数据进行负载读取.例如总个有12个SLOT(已经被两个生产者写满),当第一个消费者读取前6个SLOT,然后第二个消费者读取后6个SLOT,从而提高输出的量.

[该贴被Go0ogle于2012-11-29 10:04修改过]

2012-11-29 09:57 "@Go0ogle"的内容
非常感谢您的解答,但还有些疑问 ...

RingBuffer主要是实现一个信息交换共享的地方,环形运动唯一的特征是不断+1向下,如果你想改变其天然特征规则,肯定可以做到,但可能就会复杂了,简单顺势而为才能物尽其用,也才能得到我们最大的性能。

如果你能找到一个类似环形这样的新的数据结构,实现你跳跃式增加,确实可以提高并发量。

@banq

非常感谢您的解答.祝事业蒸蒸日上~