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

Threads & Processus C++ Discussion :

Liste de fichiers


Sujet :

Threads & Processus C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    58
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 58
    Par d�faut Liste de fichiers
    Bonjour � tous,

    Je vous explique mon soucis.
    Je travaille actuellement sur un outils de compression/decompression qui peut prendre en param�tres un liste de fichiers (*.bmp, ...).

    L'outil est fonctionnel, cependant dans le cadre d'une am�lioration, j'aimerais que chaque processeur traite un fichier diff�rent afin d'avoir un gain de temps � l'ex�cution. Est-ce possible? Et sur quelle piste dois-je me lancer? Thread, programmation parall�re, ...?

    Merci

  2. #2
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut, et bienvenue sur le forum.

    La question qu'il faudrait peut �tre se poser, c'est:
    Y a-t-il beaucoup de fichiers, ou sont-ce plut�t les traitements � appliquer � chaque fichier qui prennent du temps
    En effet, si tu as, globalement, peu de fichier � traiter mais que le traitement � effectuer est important, tu aurais sans doute � faire en sorte que les diff�rents processeurs (ou coeurs) collaborent pour traiter un fichier � la fois.

    A l'inverse, si tu as globalement beaucoup de fichiers mais que le traitement de chaque fichier prend peu de temps, il semblera en effet opportun de faire en sorte que chaque processeur (ou coeur) effectue le traitement sur un fichier particulier.

    Le fait est que cela influera fortement sur la mani�re dont tu envisagera le travail en parall�le
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    58
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2010
    Messages : 58
    Par d�faut
    Merci pour ta r�ponse

    Alors pour expliquer un petit peu mieux, le traitement est assez rapide (< 1 seconde par fichier), mais la liste est assez importante ( > 100 fichiers) sans �tre monstrueuse. Je pense qu'il est pr�f�rable que chaque fichier soit trait� par par un seul et unique processeur.

    Je suis totalement d�butant sur ce sujet, j'ai essay� de me renseigner sur internet, mais je ne trouve pas grand chose, certainement parce que je ne sais pas trop par o� commencer.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Une solution en g�n�ral efficace sur un grand nombre de donn�es demandant peu de calculs, c'est le principe de la pompe.

    En gros : un thread "pompe", sur un des coeurs, ne va faire QUE lire et mettre en buffer les donn�es (le contenu des fichiers pour toi), et les mettre dans une FIFO d�di�e.
    Un autre thread (�ventuellement deux ou trois si les tests montrent que c'est efficace) ne va s'occuper QUE du traitement, remettre les donn�es trait�es dans une autre FIFO que ton thread "pompe" va lire, pour �crire les donn�es trait�es vers leur destination finale (des fichiers encore dans ton cas).

    Cela marche parce que le thread "pompe", une fois les donn�es charg�es, n'a plus rien � faire : donc, sauvegarder les donn�es ne lui pose pas de probl�mes �tant donn� qu'il est, justement, disponible. En cas de trop grand nombre de donn�es, tu peux avoir � cr�er un autre thread "pompe" pour l'�criture.

    L'important, c'est de laisser les threads "pompe" sur un c�ur d�di�, qui ne sera pas utilis� par le(s) thread(s) de traitement.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [JSP] liste de fichiers dans une appli web
    Par cyrso dans le forum Servlets/JSP
    R�ponses: 4
    Dernier message: 21/01/2005, 17h17
  2. R�ponses: 7
    Dernier message: 19/09/2004, 22h01
  3. Liste de fichiers et de r�pertoires
    Par Freakazoid dans le forum C++
    R�ponses: 4
    Dernier message: 09/08/2004, 17h16
  4. liste des fichiers d'un r�pertoire
    Par am dans le forum C
    R�ponses: 3
    Dernier message: 04/08/2003, 17h03
  5. [Kylix] Liste des fichiers d'un r�pertoire
    Par Houben Jacques dans le forum EDI
    R�ponses: 3
    Dernier message: 30/11/2002, 21h14

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