Der Martin: Cache problem lösung gesucht

Beitrag lesen

Hallo Klaus,

ich stimme dir ja durchaus zum, dass Christoph wohl in seiner ihm eigenen brummigen Art offensichtlich nach besten Kräften versucht hat, dich falsch oder gar nicht zu verstehen. Das macht er gern.

Aber ich muss auch zugeben, dass deine Darstellung ziemlich konfus und diffus ist.

ein Cache ist ja eine optimale Lösung um langsame Festplatten ein wenig flotter zu machen. Was natürlich nicht geht und auch nicht so ist. Aber ein Geschwindigkeitsvorteil wird selbstverständlich bei korrekter implementierung erzielt. Genau das ist mein Problem.

Dieser ganze Absatz ist informationsfreies Blabla. Eine schöne Einleitung, aber völlig nutzlos.

Ich habe eine Anwendung, arbeitet sehr intensiv mit Dateien auf Festplatten (leider keine SSDs), und mit Threads.

Äh, Christoph: SSD bedeutet in Gebrauchtwagen-Annoncen "Stahlschiebedach". Aber da wir hier nicht von Autos, sondern eher von Software und Festplatten sprechen, steht es wohl für "Solid State Disk".

Also ihr seht es wird natürlich mit GNU/Linux gearbeitet (aus dem Hause RedHat).

Wie Christoph schon andeutete: Woran sollte man das sehen? Und es spielt auch IMHO keine Rolle. Das Prinzip wäre auf nahezu jedem Betriebssystem dasselbe.

Momentan ist gar kein Cache implementiert.

Doch, da bin ich mir sehr sicher, dass auch Linux schon recht effiziente Cache-Strategien anwendet.

Eine Idee, leider gescheitert aus verständlichen Gründen, war es eine Klasse zu erstellen die diese Funktion bereitstellt.

Abgesehen davon, dass die Gründe alles andere als verständlich sind, sollte man derartige Funktionen auch IMHO nicht auf Applikationsebene duplizieren. Das machen moderne Betriebssysteme schon recht ordentlich.

Es wird mit C++ gearbeitet.

Wo hast du Deutsch gelernt? Solche Passiv-Sätze sind stilistisch sehr schlecht. Besser: "Ich verwende C++".

Leider klappte es aber nicht so ganz die Threads so zu steuern das das Programm nicht zerschossen wird.

Das heißt, dass du noch grobe Fehler oder Schwachstellen im Konzept hast.

Welche Möglichkeiten gibt es eine Cachefunktionalität zu implementieren, auch Threadsicher?

Wichtig ist doch: Es darf nur eine zentrale Funktion geben, die für den Dateizugriff über den Cache zuständig ist. Diese Funktion muss entweder Mechanismen nutzen, die Mehrfachaufrufe (Reentranz) verhindern, etwa Mutex, Semaphore oder ähnliche Verriegelungen, oder sie muss konsequent auf globale Daten verzichten - aber das ist nahezu unmöglich, wenn mehrere Aufrufe letztendlich doch auf eine gemeinsame Ressource, etwa ein- und dieselbe Datei, zugreifen sollen.

Aber so unspezifisch und ungenau wie deine Frage/Problembeschreibung ist, muss leider auch die Antwort ausfallen.

So long,
 Martin

--
Schon gewusst, dass Aftershave trotz des Namens eigentlich eher fürs Gesicht gedacht ist?