LMAX と、RingBuffer と呼ばれるこの素晴らしい概念について紹介しました。そのため、1 つのスレッドのみでリングバッファーに書き込む場合、複数のプロデューサーを使用するよりもパフォーマンスが優れていると人々は言います...
ただし、典型的なアプリケーションがリングバッファーへの書き込みに1つのスレッドのみを使用する可能性があるとは本当に思いません... lmaxがどのようにそれを行っているかを本当に理解していません(もしそうなら)。たとえば、N 人の異なるトレーダーが取引所に注文を出すとします。これらはすべて、注文に変換されてリングバッファーに入れられる非同期の要求です。1 つのスレッドを使用してそれらをどのように書き込むことができるでしょうか?
質問 1. 何かが欠けているか、誤解している可能性がありますが、N 個の同時プロデューサーが存在する場合、それらを 1 つにマージし、互いにロックしないようにするにはどうすればよいですか?
質問 2. rxJava オブザーバブルを思い出しました。N 個のオブザーバブルを取得し、Observable.mergeを使用してそれらを 1 つにマージできましたが、何らかの方法でロックをブロックまたは維持しているのだろうか?