Ich hatte schon lange den Wunsch nach einem STLish-Container, den ich in ein Shared-Memory-Segment oder eine Memory-Mapped-Datei einfügen konnte.
Ich habe die Verwendung eines benutzerdefinierten Zuordners und einer neuen Platzierung in Betracht gezogen, um einen normalen STL-Container in ein freigegebenes Speichersegment zu platzieren. (wie dieser ddj Artikel ). Das Problem ist, dass STL-Container intern Zeiger auf ihren eigenen Speicher haben. Wenn das gemeinsam genutzte Speichersegment oder die Speicherabbilddatei an einer anderen Basisadresse geladen wird (möglicherweise bei einem nachfolgenden Lauf oder bei einem zweiten Prozess), sind die internen Zeiger daher plötzlich ungültig. Soweit ich herausfinden kann, funktioniert der Custom-Allokator-Ansatz nur, wenn Sie das Speichersegment immer an derselben Adresse in Ihren Prozess einbinden können. Zumindest bei Speicherabbilddateien habe ich viel Erfahrung damit, dass das NICHT der Fall ist, wenn Sie das System einfach so abbilden lassen, wie es sich anfühlt.
Ich habe mir Gedanken darüber gemacht, wie ich das machen soll, aber ich möchte es vermeiden, wenn jemand anderes die Arbeit bereits erledigt hat (das bin ich, ich bin faul).
Ich verlasse derzeit die Diskussion, da die beste Sperrstrategie stark von der Anwendung abhängig ist.