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 et QFutureInterface dans les sources de Qt Creator [QtConcurrent]


Sujet :

Multithreading

  1. #1
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut QtConcurrent::run et QFutureInterface dans les sources de Qt Creator
    J'ai du mal a comprendre l'utilisation de QtConcurrent::run dans les sources de Qt Creator.

    Dans le fichier cppfindreferences.cpp (ligne 257 : http://qt.gitorious.org/qt-creator/q...es.cpp#line257) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = QtConcurrent::run(&find_helper, workingCopy, snapshot, symbol);
    QtConcurrent::run est appelé en donnant l'adresse de la fonction et 3 paramètres. Or la fonction utilise 4 paramètres (ligne 175 : http://qt.gitorious.org/qt-creator/q...es.cpp#line175) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static void find_helper(QFutureInterface<Usage> &future,	
        const CppTools::CppModelManagerInterface::WorkingCopy workingCopy,
        Snapshot snapshot,
        Symbol *symbol)
    Forcement, ça marche bien dans Qt Creator. Mais quand j'essaie de faire la même chose, j'ai droit à un beau :
    error: no matching function for call to ‘run(void (*)(QFutureInterface<int>&)


    Autre joyeuseté, dans qtoptionspage.cpp (ligne 309 : http://qt.gitorious.org/qt-creator/q...ge.cpp#line309)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QFuture<void> task = QtConcurrent::run(&DebuggingHelperBuildTask::run, buildTask);
    QtConcurrent::run est appelé sur une fonction membre non static d'une classe (http://qt.gitorious.org/qt-creator/q...spage.h#line65 et http://qt.gitorious.org/qt-creator/q...age.cpp#line71)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void run(QFutureInterface<void> &future);
    j'ai encore droit à un
    error: no matching function for call to ‘run(void (MyNamespace::MyClass::*)())’
    Si quelqu'un a une explication (et de la doc QFutureInterface n'est pas documenté mais fait bien partie de Qt dans /include/QtCore/qfutureinterface.h ) je suis preneur. Merci


    EDIT : en lisant la réponse sur un autre post, j'ai relu http://cpp.developpez.com/faq/cpp/?p...onction_membre. Ça m'explique pourquoi cela pose problème d'appeler une fonction membre quand je le fais... mais pas pourquoi cela fonctionne dans Qt Creator

  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
    Salut.
    J'ai regardé un peu. Et à mon avis, faux mieux ne pas utiliser ces version de QtConcurrent::run. A mon avis ces signatures ne sont as dans Qt mais dans le code de QtCreator. Comme QtConcurrent::run est une template, ils ont dû se la spécialiser. Et y as surement d ebonne chance que la signature change un jour ou l'autre.

    En gros il récupère le QFutur courant pour le manipuler.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bien vue.
    Avec tes remarques, j'ai réussit à trouver comment ils ont fait :
    http://qt.gitorious.org/qt-creator/q...ions.h#line353

    Par contre, tu as raison : c'est trop spécifique. Je vais utiliser les méthodes habituelles.

    Merci

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

Discussions similaires

  1. [Debugger] Plus de suivie dans les sources
    Par nebule dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 02/06/2008, 17h55
  2. pas de "SDL_image.h" dans les sources
    Par Jérémy Lefevre dans le forum SDL
    Réponses: 6
    Dernier message: 15/05/2007, 17h01
  3. java.comm: inclure un JRE dans les sources logiciel?
    Par ccedced dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 07/03/2007, 15h16
  4. Recherche dans les sources
    Par michel baily dans le forum Delphi
    Réponses: 2
    Dernier message: 19/02/2007, 19h34

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