Suche eine Programmstruktur für Ladeschlange
-
Hallo liebe Community,
ich beschäftige mich gerade mit einem Programm, das zur Softwareverwaltung dient.
Momentan bin ich im Teil, bei dem in einer Übersicht die verschiedenen Programme als Symbole angezeigt werden. Wenn man jetzt auf diese Symbole klickt, dann kommt eine Detailansicht mit Screenshots, Beschreibung, Bewertung etc. . Das ist alles kein Problem, da mir eine Bibliothek gestellt ist die entsprechende Funktionen anbietet. Die Metadaten sind auch in den Dateien gespeichtert. Das Problem ist, dass diese Programme in Form von mountbaren Dateisystemen gespeichert werden. Das bedeutet, dass ich wenn ich irgendeine Datei extrahieren möchte, diese mounten muss. Aufgrund eines Fehlers in der Bibliothek lässt sich hier allerdings nur eine Datei gleichzeitig mounten.Jetzt habe ich eine Klasse geschrieben, die eine globale Liste (std::queue) abarbeitet. Was schoneinmal schlecht ist, diese Klasse wird bei jeder Benutzung neu instanziert, dann schaut sie ob nicht schon eine andere Instanz von sich arbeitet (globale boolean Variable) , und wenn ja, dann beendet sie sich wieder, und fügt lediglich neue abzuarbeitende Elemente zur Liste hinzu.
Die beiden globalen Variablen Liste und ob schon eine Instanz läuft, sind vor der main-Funktion definiert, und von jeder Programmstelle erreichbar und modifizierbar. Ich weiß, dass das dreckig ist, aber ich weiß einfach keinen anderen Weg.
Diese Listenarbeiter wird von zwei Stellen und in 2 unterschiedlichen Threads aufgerufen ( Damit die GUI nicht blockiert ). Zuerst wenn man die Übersicht anzeigt (Icons werden geladen) und das zweite mal wenn man die Detailansicht anzeigt (Icons und Screenshot) wird geladen.
Gibt es irgendeine Musterlösung, oder fällt euch vielleicht irgendein anderer Weg ein, denn ich weiß einfach nicht mehr wie ich das strukturieren soll.
Ich hoffe ihr habt tolle Ideen.
greesce
-
Wenn ich das richtig verstanden habe, solltest du die Klasse als Singleton nutzen. Dabei existiert immer nur eine Instanz der Klasse und du sie nicht immer beenden oder neu erstellen. Siehe Singleton-Muster für C++.