IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Pipe et taille maximale du buffer


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 28
    Par défaut Pipe et taille maximale du buffer
    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?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 482
    Par défaut
    Bonsoir,

    Citation Envoyé par Slash10 Voir le message
    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".
    Voila pourquoi les machines à voter n'auraient jamais dû devenir réalité !

    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?
    Peu probable. Un tube fait généralement 4096 octets, mais tu n'es pas censé t'en préoccuper. Lorsque celui-ci est plein (resp. vide), l'écriture (resp. lecture) devient bloquante. Il faudrait que tu nous montres ton code pour que l'on puisse en dire plus.

Discussions similaires

  1. [CR9][VS.NET]Taille maximale d'un champ paramètre
    Par San Soussy dans le forum SDK
    Réponses: 1
    Dernier message: 02/09/2005, 09h03
  2. Taille maximale d'un package
    Par haugoyard dans le forum Oracle
    Réponses: 2
    Dernier message: 09/08/2005, 16h27
  3. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  4. Réponses: 9
    Dernier message: 29/07/2003, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo