Bonjour,
J'implémente actuellement un programme se chargeant de simuler une élection. Concrètement, 2 processus de chargent de lire des fichiers contenant des votes et des votes codés. Ensuite, ces processus envoient chaque ligne lue à un 3eme qui va passer chaque ligne de vote dans une fonction de hash, et comparer le résultat avec la ligne provenant du fichier de votes codés(afin de s'assurer que les votes soient corrects, et qu'il n'y ait pas de fraudes).
Enfin, les votes valides sont envoyés à un 4eme processus qui va se charger de les trier et de renvoyer le gagnant de l'élection.
La communication entre les divers processus se fait au moyen de pipes.
Concrètement, le programme marche correctement pour de petits fichiers. Cependant, lorsque je lui demande de lire un répertoire avec 2 fichiers de votes de 250 000 lignes et 2 fichiers de votes codés de 250 000 lignes, le résultat est le suivant: Le premier fichier est lu et traité correctement(avec cependant un fort ralentissement après environ 100 000 lignes). Cependant, lorsque le programme attaque le second fichier, il s'arrête vers la 140 000 ligne, et renvoie les résultats avant de terminer l'exécution. Il manque donc 110 000 lignes qui sont "passées".
Alors voila, je ne connais pas la taille maximale de la mémoire tampon des pipes(sur UNIX), mais est ce que le problème pourrait venir de la?
Partager