私は現在、Linux での epoll および他のプラットフォームでの同等のテクノロジを中心に設計された、かなり大規模なシングルスレッドのイベントベースのアプリケーションに取り組んでいます。現在、2 つのインスタンスを通信させたい場合は、通常、同じマシン上で実行されているかどうかに関係なく、ソケットを介して行われます。パフォーマンス上の理由から、同じマシンの通信を高速化するために何らかの形の IPC を使用することを想定しています。ここで、どの IPC メカニズムを使用するかを決定する必要があります。
私にとって重要な要素は次のとおりです。
- 完全な再設計なしのイベント駆動型 -- IPC メカニズムが epoll にうまく適合しない場合、それは私にとって何ヶ月もの作業が失われることになります
- 高速 -- このメカニズムがソケットよりも高速でない場合、時間をかけて実装する価値はありません
- 柔軟で、実行中に (再) 構成可能 -- これにより、MPI などを排除できると思います。
- マルチスレッドは必要ありません。
すべてが同じパラダイムを使用している限り、プラットフォームごとに異なるメカニズムを使用したいと考えています。また、プラットフォーム固有のバインディングのために、C / C++ / Obj-C についても必要なだけ深く掘り下げたいと思っています。
なにか提案を?
ありがとう。