Shared memory - Singleton - Queue



  • Hallo Forum

    ich schreibe zur Zeit an einer etwas aufwendigeren Anwendung. Diese beinhaltet mehrere Pools, welche u.a. fleißig Threads erzeugen, welche dann meine Arbeit erledigen sollen.
    Die Threads idlen suspended vor sich hin und werden von entsprechenden Threadshedulern verwaltet. All das funktioniert auch wunderbar.

    Um den Threads Arbeit zuzuteilen, benutze ich threadsafe queues.
    Diese queues sind alle im shared memory abgelegt, bzw. sollten.
    -> Ein Objekt von einem Singleton Template abgeleitet. Dieses Template ist ebenfalls threadsafe.
    Beim Zugriff auf dieses Template bekommen die Threads allerdings immer einen Pointer auf ein eigenes Objekt und damit auch keinen Zugriff auf abgelegte Arbeit.
    Ist mein Gedankengang völlig falsch? Wenn ein Singleton Objekt nur einmal erzeugt wird und ein Zeiger darauf global gehalten wird, dann kann doch jeder Thread des Prozesses, weil gleicher Adressraum, auf die Daten zugreifen?

    Ich dachte zuerst, es stimmt etwas mit der Intialisierung nicht, allerdings wird auch tatsächlich nur ein Objekt meiner Singleton erzeugt, dennoch greift jeder Thread auf eine andere Adresse zu, an der er keine Daten findet (allerdings greift er nicht ins Leere, er kann die nicht statischen Methoden der Singleton aufrufen).

    Würde mich über kurze Antwort freuen, kann auch gerne noch etwas Code posten.

    Grüße




Anmelden zum Antworten