私は長い間、共有メモリ セグメントまたはメモリ マップ ファイルに配置できる STLish コンテナーを望んでいました。
通常の STL コンテナを共有メモリ セグメントに配置するために、カスタム アロケータと新しい配置を使用することを検討しました。(このddj記事のように)。問題は、STL コンテナーが、所有するメモリへのポインターを内部的に持つことです。したがって、共有メモリ セグメントまたはメモリ マップド ファイルが別のベース アドレスにロードされると (おそらく、後続の実行時または 2 番目のプロセスで)、内部ポインターが突然無効になります。私が知る限り、カスタム アロケーターのアプローチは、メモリ セグメントを常に同じアドレスのプロセスにマップできる場合にのみ機能します。少なくともメモリマップされたファイルでは、システムが好きなようにマップできるようにするだけでは、そうではないという経験がたくさんあります。
これを行う方法についていくつかの考えがありましたが、他の誰かが既に作業を行っている場合は避けたいと思います (怠け者の私です)。
最良のロック戦略はアプリケーションに大きく依存するため、現在、ロックについては議論から除外しています。