私が働いているポリシーにより、1.33.1 より新しいバージョンの Boost を使用することができず、4.1.2 より新しいバージョンの GCC を使用することができません。はい、ゴミですが、どうしようもありません。Boost 1.33.1 にはプロセス間ライブラリが含まれていません。
std::map
とはいえ、私のプロジェクトの 1 つでは、std::unordered_map
共有メモリに を配置する必要があります。プロセスが単一のプロセス(「サーバー」)によってロードされ、他の多数のプロセスによって読み取られる場合、書き込み/変更は1回だけです。以前に共有メモリ IPC を行ったことがないので、これは私にとってかなり新しい領域です。調べてみましshmget()
たが、同じ共有メモリ キーを割り当てに継続的に使用することはできないようです (STL コンテナー アロケーターで必要になると思います)。
共有メモリを使用するNON-BOOST STL アロケーターは他にありますか?
編集:これは以前に行われました。Dobbs 博士は 2003 年に正確にこれを行う方法についての記事を書いており、私はそれを参照として使い始めました。ただし、コード リストは不完全であり、それらへのリンクはメイン サイトにリダイレクトされます。
編集編集: Boost.Interprocess を書き直さない唯一の理由は、関連するコードの量のためです。ネットワーク間のデータ転送も複数日の承認プロセスの対象となるため、最初から書き直すことができるPOSIX共有メモリ専用の比較的短く簡潔なものがあるかどうか疑問に思っていました...