Comment paralléliser fichier en lecture et en écriture

J'ai un programme qui lit les données à partir de 2 fichiers texte, puis enregistrer le résultat dans un autre fichier. Car il y a beaucoup de données qui peuvent être lues et écrites qui cause une dégradation des performances, je veux parallize la lecture et de l'écriture des opérations.

Ma première pensée est, utiliser 2 fils comme un exemple, un thread de lecture/écriture depuis le début, et un autre thread de lecture/écriture à partir du milieu du fichier. Depuis mes fichiers sont formatés comme des lignes, et ne octets(chaque ligne peut avoir différents octets de données), de chercher, par octet ne fonctionne pas pour moi. Et la solution, je pense utiliser getline() pour sauter les lignes précédentes en premier, ce qui peut ne pas être efficace.

Est-il une bonne façon de rechercher une ligne spécifiée dans un fichier? ou avez-vous d'autres idées pour parallize fichier en lecture et en écriture?

Environnement: Win32, C++, NTFS, Disque Dur

Grâce.

-Dbger

qu'est-ce que votre système de fichiers et quel matériel utilisez-vous? si vous avez un contrôleur de disque, il peut ne pas être efficace à faire de parallèle I/O
est-ce que cela signifie parallize disk I/O aura toujours causer une dégradation des performances si seulement lecture/écriture sur le même disque?
Dbger: Si vous utilisez un disque dur, oui.
si vous traitez des fichiers, vous pouvez envisager de chevauchement des I/O et le calcul. Si vous voulez vraiment essayer parallèle, vous pouvez diviser vos fichiers en segments (logiquement), demander à ce segment, trouver en début de ligne dans le segment, et de lire jusqu'à ce segment suivant.
Je ne sais pas beaucoup au sujet de "diviser des fichiers en plusieurs segments", mais si le disque I/O préfère accès séquentiel, la segmentation appraoch travail?

OriginalL'auteur Baiyan Huang | 2010-01-03