Hallo,
ich hab da - schon wieder - ein Problem, bzw. eine Frage.
Es geht um folgendes:
Ich habe einen CORBA-Server (ORBacus 4.3.0, C++) programmiert. Dieser Server muss dabei ständig auf Ressourcen zugreifen, die immer nur einen Leser gleichzeitig erlauben (z.B. Dateien auslesen).
Wenn ich das richtig verstanden habe, bringt CORBA Parallelität für Clients schon mit.
Da ist das Chaos ja dann programmiert: 2 Clients verbinden sich, rufen die gleiche Funktion auf und liefern Müll oder Fehler, weil die Funktionen gleichzeitig aus der Datei gelesen haben.
Wie kann ich das verhindern?
Mein erster Gedanke war, das Singleton-Pattern auf die „DateiLeser-Klasse“ anzuwenden (=> keine zwei Leser-Objekte) und die Anfragen in eine Queue zu stecken (=> keine zwei gleichzeitigen Lese-Aufrufe).
Da ich aber inkompetenterweise keine Beschreibung dieser ORB-Parallelität gefunden hab , stell ich mir das in etwa wie ein Unix-fork vor. Dabei würde dann aber der gesamte Prozess kopiert, d.h. das Singleton-Muster würd nicht mehr greifen - und schon bin ich wieder beim Ursprungsproblem.
Wär wirklich toll, wenn da jemand einen Vorschlag hat!
kvida