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 :

QtConcurrent::run() pour une fonction membre [QtConcurrent]


Sujet :

Multithreading

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut QtConcurrent::run() pour une fonction membre
    Bonjour,
    je souhaiterais utiliser la fonction run de QtConcurrent mais je trouve aucun exemple qui me permet de comprendre son fonctionnement.
    Je souhaiterais appeler une fonction d'une classe du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Toto::traitement(arg1,arg2,arg3, ...)
    {
           while(1){ }
    }
     
    void Toto::tutu()
    {
      QFuture<void> task =  QtConcurrent::run(Toto::traitement,arg1,arg2,arg3, ...);
    }
    J'ai regardé la doc sur http://qt.developpez.com/doc/latest/qtconcurrentrun/, mais comment faire pour une fonction membre.

    Merci.

  2. #2
    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
    Qu'es ce que tu ne comprend pas ici
    http://qt.developpez.com/doc/latest/...mber-functions

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // call 'void QImage::invertPixels(InvertMode mode)' in a separate thread
     QImage image = ...;
     QFuture<void> future = QtConcurrent::run(image, &QImage::invertPixels, QImage::InvertRgba);
     ...
     future.waitForFinished();
     // At this point, the pixels in 'image' have been inverted
    Suis-je obligé dans cet exemple de mettre en paramètre image dans run() ?
    Si oui, pourquoi ?
    Le 1er paramètre doit-il appartenir à la classe dans laquelle se trouve la fonction appelée ?

  4. #4
    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 silvio78 Voir le message
    Le 1er paramètre doit-il appartenir à la classe dans laquelle se trouve la fonction appelée ?
    • le premier paramètre est l'instance sur lequel on appeler la fonction
    • le deusième la fonction membre de l'instance
    • les autres : les paramètre de la fonction


    Par contre, il faut que la durée de vie de l'instance soit plus grande que l'execution du run.
    Dans le code que tu montre, je pense que ce premier paramètre est this.
    Mais manipuler une même instance par plusieurs thread permet des accès concurrent qu'il faut protéger.

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup
    J'ai réussi à résoudre mon problème.

    Merci pour ta rapidité, j'hésiterai moins à poster sur un forum quand je bloquerai maintenant.


    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/02/2011, 21h19
  2. Réponses: 4
    Dernier message: 01/12/2005, 12h33
  3. Réponses: 3
    Dernier message: 28/11/2005, 12h15
  4. paramètres pour une fonction
    Par bul dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/05/2005, 07h49
  5. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15

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