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 :

Lecture parallele d'un fichier et place memoire d'un fichier


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 96
    Points : 32
    Points
    32
    Par défaut Lecture parallele d'un fichier et place memoire d'un fichier
    Bonjour

    J'aurais aimé savoir si, sur un systeme de fichier ext ou ntfs, il etait possible que plusieur coeur lisent en parallel les lignes d'un fichier text (par exemple avec 2 coeurs, lignes paires pour le coeur de rang 0, impaires pour le coeur de rang 1.

    Deplus je me demandais si la fonction open qui ouvre un fichier charge en memoire ce fichier ou si juste un pointeur est cree et se n'est que la lecture effective qui va reellement charger les portion devant etres lu, en memoire

    Merci par avance pour vos reponses

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    La fonction open se charge simplement d'ouvrir le fichier, à ma connaissance sans buffer.
    fopen par contre a un buffer qu'elle remplit au fur et à mesure des lectures (c'est d'ailleurs très fun à implémenter, et si ma mémoire est bonne le Kernighan & Ritchie en propose une implémentation minimale).
    Mais ces deux informations sont dépendantes de l'implémentation.

    Pour lire via deux threads le même fichier, ça doit être faisable, en faisant gaffe aux modes d'ouverture, mais rien ne prouve que ça ira plus vite, au contraire.
    Si vraiment le sujet t'interesse, tu as les overlapped I/Os sous Win32, et sous linux je pense que passer le descripteur en mode non-bloquant provoque un fonctionnement similaire, mais honnêtement j'en sais rien du tout.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Torx26 Voir le message
    Bonjour

    J'aurais aimé savoir si, sur un systeme de fichier ext ou ntfs, il etait possible que plusieur coeur lisent en parallel les lignes d'un fichier text (par exemple avec 2 coeurs, lignes paires pour le coeur de rang 0, impaires pour le coeur de rang 1.
    Salut

    Généralement, dans un système multi coeurs, tu peux spécifier les processeurs chargés d'exécuter ton programme. Ensuite c'est le système qui prend la main. Donc en fait tu n'as pas vraiment besoin de te préoccuper de ça...


    Citation Envoyé par Torx26 Voir le message
    Deplus je me demandais si la fonction open qui ouvre un fichier charge en memoire ce fichier ou si juste un pointeur est cree et se n'est que la lecture effective qui va reellement charger les portion devant etres lu, en memoire
    Aucune fonction d'ouverture ne charge le fichier en mémoire. Ce serait un gaspillage de ressources inouïes. Tu imagines la mémoire qu'il faudrait ???
    Les fonctions d'ouvertures prépositionnent un identifiant. Ensuite, quand tu demandes à récupérer des octets, là le système va lire le fichier pour te ramener les octets demandés. Et la différence entre open et fopen est que la seconde est bufferisée alors que la première ne l'est pas (ce qui n'empêche pas bien entendu le système d'avoir ses propres buffers).
    Accessoirement c'est assez amusant (sous Linux) d'écrire un programme qui va lire un fichier pendant qu'un autre va y écrire et de les lancer en parallèle voir lequel des deux gagne. Ou alors de lancer un "more fichier" d'un coté tandis que tu lances un super processus que tu rediriges dans le fichier de l'autre coté et de faire ensuite monter le "more" bien au delà de 100%...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. enregistrement d'un fichier dans la memoire
    Par bobkorn dans le forum Langage
    Réponses: 1
    Dernier message: 21/04/2008, 18h33
  2. Réponses: 3
    Dernier message: 29/11/2007, 15h50
  3. Réponses: 7
    Dernier message: 06/02/2007, 13h27
  4. Charger Un Fichier Txt En Memoire
    Par chakcc dans le forum C
    Réponses: 11
    Dernier message: 13/11/2006, 10h54
  5. [debutant] ecriture dans la memoire et/ou fichier
    Par damien.yep dans le forum Débuter
    Réponses: 7
    Dernier message: 01/02/2005, 23h27

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