かなりの量のデータを生成する 1 つのアプリケーションがあり、別の C++ アプリケーションがアクセスできるようにしたいと考えています。プラットフォームは RHEL5、それが重要な場合は g++ です。
以前は、データを /dev/shm (基本的には Linux メモリ ドライブ) に書き込んでから、他のアプリケーションにそこから読み取らせていました。
ただし、これは、ofstream、次に ifstream があり、データをメモリに再ロードするため、かなり非効率的です。さらに、データをテキスト ファイルとしてメモリに格納すると、単にメモリとして保持するよりも多くのスペースが必要になるように思われます (これが 100% 正しいかどうかはわかりませんが)。
共有したいデータは次の形式です
vector< vector<struct> > mydata;
他のアプリケーションで次のようなことができるようにしたい
mydata.at(ii).back()
必要なデータを取得します。mydata には、実際にはかなりの量のデータが含まれます。それをCSV形式のファイルに出力すると、10GBくらいになるかもしれません。私が取り組んでいるサーバーには、これを処理するのに十分な 24 GB のメモリがあります。
さらに、この取得は、最初のアプリケーションが mydata にさらにエントリを追加するときに発生します (潜在的な競合状態があるのでしょうか?)。
C++ で vector< vector > mydata; を共有する方法はありますか? 2 つのアプリケーション間で? もしそうなら、使用するのに最適な実装は何ですか? 可能であれば、サードパーティのライブラリは避けたいと思います。