[C++] Synchronisation zwischen DLLs?

SvenF311

doesn't like
ID: 151941
L
24 April 2006
307
61
Hallo,

ich muss mich gerade mit folgendem Problem herumschalgen: Ich habe zwei Plug-in-DLLs, die von einem gemeinsamen Host-Programm aufgerufen werden. Diese Plug-Ins sollen einige Daten in ein gemeinsames (von einem der Plug-Ins zu wählendeds) Verzeichnis schreiben und müssen daher irgendwie synchronisiert werden. Da die Plug-Ins jedoch als separate DLLs vorliegen und multithreaded in mehreren Instanzen laufen gestaltet sich das schwierig.

Die einzige Möglichkeit, die ich zur Zeit sehe ist das ganze über die Erstellung diverser Temp-Dateien zu steuern. Wobei die Multithread-Geschichte u.U. schneller sein könnte, als die Festplatte. :roll:

Gibt's irgendwelche alternativen Lösungsansätze? Hat sich hier vielleicht schon jemand mit einem ähnlichen Problem beschäftigt?

TIA & MfG
Sven
 
Temporär einen Wert mit dem Pfad in die Registry schreiben. Die DLL, die als erste aufgerufen wird, trägt den Wert ein und alle anderen DLL lesen von dort den Pfad aus. Beim Beenden kann der Eintrag wieder gelöscht werden.

Alternativ: %temp nehmen.

Marty
 
einen eigenen synchronisierten Wrapper bauen ?
Hmm, das erscheint mir dann doch zu aufwändig. *fühlt sich da nicht ganz so sattelfest* Zumal die Plug-Ins ohnehin noch auf eine andere Schnittstelle umgewrappt werden müssen.

Temporär einen Wert mit dem Pfad in die Registry schreiben. Die DLL, die als erste aufgerufen wird, trägt den Wert ein und alle anderen DLL lesen von dort den Pfad aus. Beim Beenden kann der Eintrag wieder gelöscht werden.
Natürlich, die Registy! An die habe ich ja überhaupt nicht gedacht. :wall:

Ich habe es jetzt jedenfalls so gelöst, dass beide Plug-Ins aus einer fest vorgegebenen Config-Datei das Zielverzeichnis einlesen. (Auf zusätzliche Unterverzeichnisse wird verzichtet.) Dann wird die Anzahl der gestarteten Plug-Ins in einer (mittels Lock-File gesicherten) Temp-Datei hochgezählt und zur Generierung einzelner Dateinamen verwendet. Das scheint soweit auch ganz gut zu funktionieren.

Um das (atomic) Lock-File werde ich wohl nicht umherkommen, aber den Datenaustausch werde ich bei Gelegenheit wohl noch auf Nutzung der Regisrty umschreiben.

Besten Dank!