Hallo,
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.
Ich habe eine Anwendung, arbeitet sehr intensiv mit Dateien auf Festplatten (leider keine SSDs), und mit Threads.
Die einzelnen Threads kommunizieren über Shared Memory und mit Signalen.
Also ihr seht es wird natürlich mit GNU/Linux gearbeitet (aus dem Hause RedHat). Momentan ist gar kein Cache implementiert.
Eine Idee, leider gescheitert aus verständlichen Gründen, war es eine Klasse zu erstellen die diese Funktion bereitstellt.
Es wird mit C++ gearbeitet.
Leider klappte es aber nicht so ganz die Threads so zu steuern das das Programm nicht zerschossen wird. Es wurde auch mit Mutexen gearbeitet. Aber dann lief die Anwendung nicht um den erwarteten Geschwindigkeitsgewinn schneller.
Eine Methode der Klasse wurde von einem Thread aufgerufen die den Cache aktualisierte und die geänderten Dateien auf die Festplatte schrieb. Es gab auch nur eine globale Instanz der Klasse. Mit dieser griefen alle Threads auf eine Methode zu die den Cache abfragte nach einer bestimmten Datei. Lag es an der falschen Implementierung dieser Idee? Oder ist diese Idee von vornherein als schlecht abzustempeln?
Welche Möglichkeiten gibt es eine Cachefunktionalität zu implementieren, auch Threadsicher?
Klaus Berensteiner