globales Mutex?



  • Hallo,
    ich möchte irgendein Objekt erstellen, welches nach dem beenden meines Programmes im Speicher bestehen bleibt und erst beim shutdown gelöscht werden soll. Diese Objekt sollte einen eigenen Namen haben und auch für andere Prozesse zugreifbar sein.
    Ich hatte erst an ein Mutex mit Name gedacht, aber die wird leider bei Ende des Prozesses zerstört.
    Was gibt es sonst noch?



  • Ähm, was willst Du damit denn bezwecken ?



  • Ich möchte wissen, ob mein Programm schoneinmal gestartet wurde. Registry und Dateien scheiden aber leider aus.



  • GlobalAddAtom / GlobalFindAtom



  • @Jochen:

    Sag mal, weils hier grad irgendwie (fast) dazupasst: ich suche schon seit längerem immer wieder eine Möglichkeit in einem Prozess ein benanntes Objekt mit einem Userdata Pointer zu verankern.

    Einen "named singleton pointer" quasi.
    Und alles was mir bis jetzt eingefallen ist will mir nicht so recht gefallen -- also pagefile backed shared memory und so Sachen. Sollte halt auch so schnell wie möglich anzusprechen sein. Kannst du mir da vielleicht einen Tip geben?



  • hustbaer schrieb:

    ich suche schon seit längerem immer wieder eine Möglichkeit in einem Prozess ein benanntes Objekt mit einem Userdata Pointer zu verankern.

    Das "AddAtom" (prozess lokal) hilft Dir nicht? Es wird sogar dazu empholen für "schnelles speichern von Strings".



  • Jochen Kalmbach schrieb:

    hustbaer schrieb:

    ich suche schon seit längerem immer wieder eine Möglichkeit in einem Prozess ein benanntes Objekt mit einem Userdata Pointer zu verankern.

    Das "AddAtom" (prozess lokal) hilft Dir nicht? Es wird sogar dazu empholen für "schnelles speichern von Strings".

    Ich denke nicht (es sei denn ich hätte eine Möglichkeit übersehen wie man das mit ATOMs machen kann). Ich bräuchte quasi sowas wie ein ATOM wo ich zusätzlich noch eine SetUserData() und GetUserData() Funktion dazu habe. (EDIT: der Name alleine reicht nicht, der ist ja der "Key" - was jetzt noch fehlt wäre die "Value" dazu -- und den Wert des ATOM kann ich nicht als "Value" verwenden, da ich mir den ja nicht aussuchen kann).

    Eine Möglichkeit wäre eine Environment Variable zu verwenden, aber das ist halt ziemlich "hässlich". Eine andere Möglichkeit wäre ein "Memory Mapping Objekt" zu verwenden - bloss das ist wieder ziemlich langsam (das anlegen/öffnen des Mappings).


  • Mod

    Ganz verstehe ich das nicht!
    Wenn Du eine eigene DLL hast, in der Du diese Funktionen verankerst, dan hättest Du diese Funktionen doch.

    Was versprichst Du Dir von dieser "globalen" Funktionalität mehr, die irgendwie in der API-verankert ist.

    Schnelle Verfügbarkeit, individuellen Nutzen. All das hat eine Stück Code in einer DLL...

    Extistieren Fenster, kanst Du wunderbar SetProp/GetProp verwenden.


Anmelden zum Antworten