Anzeige:
Ergebnis 1 bis 4 von 4

Thema: dequeue mit shared memory

  1. #1
    BuPunkt
    Gast

    dequeue mit shared memory

    Liebe Leute.

    Hat schon mal jemand eine stl::dequeue o.ä. auf shared memory (statt auf den Heap) angewandt oder hat bzw. kennt eine Implementierung?

    Hintergrund:
    Meine PHP-Extension enthält eine Queue, die für alle Clients gemeinsam genutzt werden soll. Da Apache unter Linux jedoch mehrere Prozesse anlegt (Windows nur mehrere Threads im selben Prozess), hat hier jeder Prozess seine eigene Queue.
    Eine Datenbank möchte ich zunächst nicht nutzen, da die aktuelle Implementierung unter Windows schon läuft und ich möglichst wenig umbauen möchte.
    Am einfachsten scheint mir daher, die intern verwendete dequeue aus der STL für shared memory zu erweitern und weiterhin zu nutzen.

    Danke,
    Burkhard

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Hat schon mal jemand eine stl::dequeue o.ä. auf shared memory (statt auf den Heap) angewandt oder hat bzw. kennt eine Implementierung?
    Selber verwendet habe ich soetwas noch nicht, aber Dinkumwares Implementierung der C++ Standardbibliothek sollte dies können.
    Siehe hier: http://www.dinkumware.com

    Evtl. kannst du ja auch Boost.Interprocess gebrauchen:
    http://www.boost.org/doc/libs/1_36_0...erprocess.html

  3. #3
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Zitat Zitat von BuPunkt Beitrag anzeigen
    Da Apache unter Linux jedoch mehrere Prozesse anlegt (Windows nur mehrere Threads im selben Prozess), ...
    Kenn mich mit Apache nicht aus, aber ich würde mal nachschaun ob das möglicherweiße nur Konfigurationssache ist. Also vielleicht geht das unter Linux eh auch mit threads, wenn mans entsprechend konfiguriert.
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  4. #4
    BuPunkt
    Gast
    Danke für eure Antworten.

    @Panzi: Recht hast du, Apache lässt sich auch so konfigurieren, dass er einen Prozess in mehrere Threads aufteilt. Leider habe ich die Server-Konfiguration nicht in der Hand, bin also per order di mufti an die Prozessvielfalt gebunden.

    @locus vivendi: Bin deinen Tipps nachgegangen. Boost kann das.

    Ich kam nun dahinter, dass mir das noch nicht reicht: Ich brauche wohl grundsätzlich eine Speicherverwaltung auf Shared Memory. Ich werde dies wohl durch einen Chunk (größerer zusammenhängender Speicherblock) lösen, den ich mit den shm...()-Methoden vom Shared Memory anfordere (siehe http://www.pronix.de/pronix-229.html).
    Diesen Chunk könnte ich dann Doug Lea's malloc() als "Heap" vorwerfen (siehe http://g.oswego.edu/, Doug Lea's malloc() wird in dem gängigen Linux-Kernel ohnehin verwendet und ist Teil der Standard-C-Library, also geschenkt).

    Mir fehlt nur noch die Verknüpfung eines eigenen Speicherblocks mit dem malloc(). Wenn hier jemand ein Beispiel parat hat (ich forsche natürlich weiter), kann er/sie mir gern auf die Sprünge helfen.

    Burkhard
    Geändert von BuPunkt (01-10-2008 um 13:07 Uhr)

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •