Gemeinsame Karte mit boost::interprocess
Habe ich eine einfache Anforderung, die möglicherweise schwer zu lösen. Ich habe einige führt wie diese oder diese aber ich kann nicht scheinen, um readilly Sie verwenden. Die erstere nicht selbst übersetzen, in baubare code für mich. Ich bin nicht erfahren mit Boost, um nur dies Schreibe, auf meine eigene, aber es scheint mir, könnte dies eine häufige Anforderung.
Habe ich auch stoßen Der STL-Map aber ich habe noch nicht in der Lage gewesen, es zu montieren, die in funktionierenden code.
Ich bin am überlegen boost::interprocess
ist der Weg hier zu gehen, es sei denn, ich will schaffen, shared memory map von Grund auf neu.
Ich bin nicht besorgt, mit der Portabilität. Ich brauche eine Lösung, die die Arbeit mit MS-compiler, speziell die eine, die kommt mit VS 2010.
Dieses poster zu wollen scheint mehr oder weniger das, was ich versuche zu tun, außer ich brauche die Karte eine GUID an, die eine beliebige Länge Binär-Puffer (aber einen int zu string ist ebenso gut als Ausgangspunkt). Leider kann ich nicht kompilieren, den code sauber zu beginnen, auch mit Experimenten.
Auch ich habe zwei Bedenken: A) ist es möglich, automatisch (oder zumindest vorhersehbar) vergrößern/verkleinern des freigegebenen Speicher für die Allokation muss und B) angenommen, ein Prozess wird die Karte, wie kann ein anderes Verfahren "Anhängen", um es?
Ich habe nichts dagegen, wenn eine Lösung erfordert mehrere gemeinsame "Segmente", um die Zuweisung muss. Es muss nicht unbedingt eine einzelne monolithische gemeinsamen Speicherblock.
Jede Hilfe wird sehr geschätzt.
- Ja,
boost::interprocess::map
sollte Ihnen nur, was Sie brauchen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier das jüngste Beispiel, das ich geschrieben hatte, zu lernen, die Verwendung von Landkarten in den Shared memory. Es kompiliert wird, also wahrscheinlich, mit dem Sie Experimentieren können Sie entsprechend Ihrer Anforderung.
Den code für ein server-Prozess erstellt gemeinsam genutzten Speicher und stellt anzeigen ein:-
Den code für einen client-Prozess legt den Speicher und greift auf anzeigen der Daten.
Den Code für den Client-Prozess erklärt, wie die Benutzung von "Namen" und eine offset-Zeiger ist, können andere Prozesse Anhängen und den Zugriff auf die Karte erstellte Inhalte SHM durch den server-Prozess.
Aber, die Aufteilung von Größe (hier seine '65536') beim erstellen eines neuen shared-memory-segment, bin ich mir nicht sicher, ob die Größe geschrumpft, aber wahrscheinlich können Sie weitere Stücke von shared-memory zur Erweiterung des SHM...
Hoffe, es half...