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 :

Synchronisation signal/slot de deux QThread


Sujet :

Multithreading

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut Synchronisation signal/slot de deux QThread
    Bonjour à tous,

    Actuellement j'utilise pour attendre le résultat d'un slot du thread principale la méthode wait(ms).

    Le contexte du projet est le suivant :

    1-Le Thread principale et l'objet est créé à partir de la classe MainWindow : public QMainWindow

    2-Le Thread secondaire est créé à partir de le méthode moveToThread(_thread);
    L'object secondaire est créé à partir de la classe comm_modules : public QObject

    Méthode de création du thread secondaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        comm_modules(){
            _thread = new QThread;
            moveToThread(_thread);
            _thread->start();
            myInit();
        }

    J'ai essayé la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(&myObject, &MyClass::myVarChanged, &worker, &Worker::setMyVar, Qt::BlockingQueuedConnection);
    J'ai obtenu un interblocage (deadlock).

    Vous auriez une idée simple pour attendre depuis le thread seondaire qu'un SLOT du thread principale se termine ?

    Merci d'avance.

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    Bonjour et tu pourrais émettre un signal à la fin de ton slot du thread principal en ayant fait un connect dans le constructeur de comm_modules et un slot connecté à lui dans comm_modules.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut
    Ca serait une idée mais ça doublerait le nombre de signal/slot.

    On m'a répondu cela aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QEventLoop loop;
    QObject::connect(myobject,&MyObject::FinishedSignal,&loop,&QEventLoop::quit);
    loop.exec();

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 374
    Points : 47
    Points
    47
    Par défaut
    Pour la méthode connect, il y a le 5ème argument suivant :

    Qt::BlockingQueuedConnection

Discussions similaires

  1. [QThread] Stopper proprement un QThread avec un signal/slot
    Par rdtech dans le forum Multithreading
    Réponses: 2
    Dernier message: 10/02/2018, 14h40
  2. Signal et slot entre deux projets
    Par Toto ZEHERO dans le forum Débuter
    Réponses: 4
    Dernier message: 06/12/2014, 17h02
  3. Synchroniser 2 dossiers sur deux pc différents avec Windows
    Par Mut dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 26/05/2006, 11h33
  4. Connexion "directe" signal - slot
    Par broidsy dans le forum Qt
    Réponses: 3
    Dernier message: 27/02/2006, 09h37

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