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

Multithreading Discussion :

Moyen le plus simple pour paralléliser avec données partagées


Sujet :

Multithreading

  1. #21
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ymoreau Voir le message
    Ok, mais je ne vois pas comment adapter ça à mon besoin. Dans l'exemple on appelle une fonction de QImage, instance de la liste traitée par QtConcurrent. A quel endroit je spécifierais de créer une instance de ma classe puis d'appeler une certaine function avec l'élément de la liste traitée ? Et de toute façon, est-ce que du coup ça ne créerait pas une instance de ma classe de traitement à chaque tour de boucle ? Comme je l'ai dit ça serait bien trop lourd.
    Je peux avoir plusieurs millions de fichiers à traiter, alors une allocation mémoire à chaque élément ferait perdre pas mal de temps je pense.
    Tes noms de fichier correspondent au QImage.
    Ta classe pourrait être le foncteur ou tu créé un foncteur qui utilise ta classe(l'instance de ta classe sera partagée entre les foncteurs).


    Citation Envoyé par ymoreau Voir le message
    Il me semble plus simple de faire quelque chose comme ça non ?
    Difficile à te dire.

  2. #22
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Citation Envoyé par yan Voir le message
    Ta classe pourrait être le foncteur ou tu créé un foncteur qui utilise ta classe(l'instance de ta classe sera partagée entre les foncteurs).
    Donc si ma classe est le foncteur, elle sera instanciée à chaque appel de concurrent (pour chaque fichier) non ?
    Et si ma classe est partagée ça ne va pas, car elle utilise des données temporaires propres à son traitement qui ne peuvent pas être partagées entre plusieurs fichiers.

    Le mieux (selon moi) est d'avoir autant d'instance de traitement que de coeurs disponible, qui gèrent chacune leur tampons internes.
    Pour ces raisons je pense plutôt partir sur le QThreadPool. Je laisse du coup soin à la classe de traitement de récupérer le nom de fichier à traiter, puis de réinitialiser ses tampons avant d'en récupérer un nouveau.

    Merci pour ta patience et toutes tes réponses

  3. #23
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ymoreau Voir le message
    Donc si ma classe est le foncteur, elle sera instanciée à chaque appel de concurrent (pour chaque fichier) non ?
    j'aurais dis une copie par thread. Mais je n'en ai aucune preuve ^^

    Citation Envoyé par ymoreau Voir le message
    Pour ces raisons je pense plutôt partir sur le QThreadPool. Je laisse du coup soin à la classe de traitement de récupérer le nom de fichier à traiter, puis de réinitialiser ses tampons avant d'en récupérer un nouveau.
    Ok.
    Pour répartir les fichiers à traiter, tu pourrais aussi partager une liste de fichier non lue entre les threads.

    QThreadPool et les QtConcurents sont plutôt pour des actions on va dire "simples".
    Du coup, de ce que j'ai compris, l'utilisation de QThread semble plus logique.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/06/2014, 13h08
  2. moyen le plus simple pour Historiser
    Par AmauryLondon dans le forum Excel
    Réponses: 1
    Dernier message: 22/05/2012, 21h22
  3. [Quartz] Quartz 2D le moyen le plus simple pour les images
    Par NiamorH dans le forum Développement OS X
    Réponses: 6
    Dernier message: 02/05/2007, 17h34
  4. Réponses: 1
    Dernier message: 27/03/2007, 18h22
  5. Réponses: 11
    Dernier message: 13/07/2006, 16h15

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