我已经了解了 LMAX 和这个名为 RingBuffer 的奇妙概念。所以人们说,当只有一个线程写入环形缓冲区时,性能比多个生产者要好得多......
但是,我真的不认为典型应用程序可以仅使用一个线程在 ringbuffer 上写入...我真的不明白 lmax 是如何做到的(如果他们这样做的话)。例如N个不同的交易者在交易所下订单,这些都是异步请求,正在转换为订单并放入ringbuffer,他们怎么可能用一个线程写这些?
问题 1. 我可能会遗漏某些内容或误解某些方面,但是如果您有 N 个并发生产者,如何将它们合并为 1 而不相互锁定?
问题 2。我记得 rxJava 可观察对象,您可以在其中获取 N 个可观察对象并使用Observable.merge将它们合并为 1我想知道它是否以任何方式阻塞或维护任何锁定?