【发布时间】:2015-07-26 02:32:43
【问题描述】:
我已经了解了 LMAX 和这个名为 RingBuffer 的奇妙概念。 所以大家说,当只有一个线程写入环形缓冲区时,性能比多个生产者要好得多......
但是,我真的不认为典型应用程序可以仅使用一个线程在 ringbuffer 上写入...我真的不明白 lmax 是如何做到这一点的(如果他们这样做的话)。比如N个不同的交易者在交易所下单,都是异步的请求,被转化为订单并放入ringbuffer,他们怎么可能用一个线程来写呢?
问题 1. 我可能会遗漏某些内容或误解某些方面,但是如果您有 N 个并发生产者,如何将它们合并为 1 并且不相互锁定?
问题 2。我记得 rxJava observables,你可以使用 Observable.merge 将 N 个 observables 合并为 1,我想知道它是否以任何方式阻塞或维护任何锁?
【问题讨论】:
标签: java multithreading rx-java disruptor-pattern lmax