Ich habe ein Programm, das Daten aus 2 Textdateien liest und speichern Sie das Ergebnis in eine andere Datei. Da es viele zu lesende und zu schreibende Daten gibt, die einen Leistungseinbruch verursachen, möchte ich die Lese- und Schreiboperationen parallelisieren.Wie parallel Datei lesen und schreiben
Mein erster Gedanke ist, verwenden Sie 2 Threads als Beispiel, ein Thread lesen/schreiben von Anfang an, und ein anderer Thread lesen/schreiben von der Mitte der Datei. Da meine Dateien als Zeilen und nicht als Bytes formatiert sind (jede Zeile kann unterschiedliche Datenbytes haben), funktioniert byteweise bei mir nicht. Und die Lösung, an die ich denken könnte, ist getline() zu verwenden, um die vorherigen Zeilen zuerst zu überspringen, was möglicherweise nicht effizient ist.
Gibt es eine gute Möglichkeit, eine bestimmte Zeile in einer Datei zu suchen? oder haben Sie noch andere Ideen, um das Lesen und Schreiben von Dateien zu paralisieren?
Umwelt: Win32, C++, NTFS, einzelne Festplatte
Dank.
-Dbger
Was ist Ihr Dateisystem und welche Hardware verwenden Sie? Wenn Sie nur einen Controller/Datenträger haben, ist es unter Umständen nicht effizient, parallele E/A durchzuführen – Anycorn
, also bedeutet das, dass Platten-I/O parallieren wird immer eine Leistungseinbuße verursachen, wenn nur auf dem gleichen Datenträger gelesen/geschrieben wird? –
Dbger: Wenn Sie eine Festplatte verwenden, ja. – Mike