Shared-Memory Newbie: Linked List möglich?



  • Hallo,
    Hab derzeit leider keinen Test-LinuxRechner deswegen mal ne theoretische Frage. Hab mich grad mit Shared Memory beschäftigt.
    Ich verstehe schon das Grundprinzip, aber ich hab mal die Frage:
    Ist es auch möglich dynamische Objekte in einem SM-Object zu benutzen?

    Z.B. wenn ich eine Linked List über mehrere nicht verwandte Prozesse zugreifbar machen will. Wie allociere ich dann den Speicher innerhalb des
    Shared Memory Objects?

    Das wär nämlich echt prakisch 🙂

    Gruss,
    Malte



  • schared memory ist doch dynamisch allokierter Speicher eben nur so, dass andere Prozesse darauf zugreifen können.

    Versteh jetzt dein Problem nicht.



  • Es gibt doch aber eine Begrenzung, wieviele SM-Objecte erstellt werden
    können. (Ich glaub pro Prozess 6)
    Und wenn man für jeden Eintrag in der Link-List eins verbraucht, wirds
    ein bisschen eng.
    Deswegen dacht ich man macht ein großes auf, und dann gibts funktionen
    die innerhalb dieses Speicherbereichs arbeiten...



  • Richtig gedacht. Wie war jetzt die Frage?



  • Er will, das malloc oder new Speicher im shared memory drin alloziert.

    Da musst du dir wohl einen Pool Allokator anschauen/machen oder so.



  • *grins* bin ja selber noch am grübeln.

    Also nochmal:
    Ich würde gerne eine Linked-Liste allen Prozessen zur Verfügung stellen.
    Diese Liste ändert sich logischerweise dynamisch, jenachdem vieviele Prozesse
    "eingeloggt" sind.
    Meine Frage ist jetzt die:
    Mein Server erstellt das SH-Memory Object. Schreibt grundsätzliche Infos
    rein. Jetzt meldet sich ein Client an. Dann würde sich die Client-List vom
    Server, um eins erhöhen und ein eintrag in der Linked-Liste würde mit den Infos
    vom Clienten gefüllt.
    Wenn ich jetzt nen neuen Listeneintrag mit "new()" erstelle, wird der doch
    auf dem HEAP abgelegt und nicht in dem Shared-Memory-Object. Ist also nicht
    von den anderen Prozessen erreichbar...
    Oder hab ich das noch nicht ganz verstanden ?!

    (Problem ist halt, daß ichs net grad einfach mal ausprobieren kann)
    gruss



  • thx, für die Antwort 🙂

    Pool Allocator?
    ups, hab ich ja noch nie gehört. Ist der bei STL oder Boost oder
    so dabei, oder hat vielleicht einer nen Link für einen, den ich
    verwenden kann?

    gruss



  • Bei Boost ist so was bei, musst du eben nur umbasteln auf Shared Memory. Ansonsten kauf dir das Buch "Modernes C++ Design" da wird ausführlich erklärt, wie man so was implementiert (das Buch enthält aber noch mehr interessante Themen :))

    Modernes C++ Design | ISBN: 3826613473



  • Dank Dir!
    Werd mir das mal anschauen 🙂

    Gruss


Anmelden zum Antworten