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

Qt Quick Discussion :

Quand je lance mon application Qt, j'ai 6 threads qui se lancent, ils font quoi ces threads


Sujet :

Qt Quick

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Par défaut Quand je lance mon application Qt, j'ai 6 threads qui se lancent, ils font quoi ces threads
    bonjour à tous,

    j'ai fait une application de base avec le code QML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Window {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
     
        Rectangle{
            width : parent.width / 2
            height : parent.height /2
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.verticalCenter: parent.verticalCenter
            color : "red"
     
            RotationAnimation on rotation {
                    loops: Animation.Infinite
                    from: 0
                    to: 360
                }
     
            MouseArea{
                anchors.fill : parent
                onClicked{
                      console.log("coucou")
                    controller.boutonRun()
                }
            }
        }
    }
    et quand j' appuie sur le bouton sa lance la méthode boutonRun de l'objet controller qui va juste lancer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Controller::boutonRun()
    {
        qDebug() << "bouton lancé ! ";
        sleep(5);
    }
    quand je lance le programme j'ai donc un rectangle rouge qui tourne sur lui meme. Ce qui m'interroge c'est le fonctionnement de l'application.

    Quand je fais sur un terminal :
    cat /proc/<pid_de_mon_application>/status | grep Threads

    j'obtiens:
    Threads: 6

    j'ai donc 6 threads qui tourne en parallele juste avec mon application.

    je me suis donc dit naivement qu'au moins 1 thread controlé le code source et un autre l'interface graphique avec mon rectangle rouge, or quand j'appuie sur le bouton, le sleep(5) fige mon interface graphique et le rectangle rouge ne bouge plus pendant 5 secondes donc l'interface graphique et mon code source ne font qu'un, donc juste 1 thread ? et a quoi sert les autres 5 threads ?


    merci d'avance pour votre aide

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Ce sont certainement des threads interne au fonctionnement de Qt.
    je me suis donc dit naivement qu'au moins 1 thread controlé le code source et un autre l'interface graphique avec mon rectangle rouge, or quand j'appuie sur le bouton, le sleep(5) fige mon interface graphique et le rectangle rouge ne bouge plus pendant 5 secondes donc l'interface graphique et mon code source ne font qu'un, donc juste 1 thread ? et a quoi sert les autres 5 threads ?
    Ils peuvent être synchronisés. Notamment, les cinq threads peuvent attendre de recevoir du travail de la part du thread principal.
    Globalement, votre réflexion n'est pas correcte. D'une part, dire thread de code source n'est pas correct. Votre code source peut être exécuté par un thread (cas classique), ou vous pouvez vous même créer des threads exécutant des sous parties du code source. C'est notamment ce que fais Qt, pour certains points précis de son fonctionnement (j'ose croire, le moteur JS, mais il n'y a pas que ça).
    Avec un débogueur, on peut savoir (plus ou moins) ce que font les threads (ou du moins, où ils en sont, lors de l'arrêt sur un point d'arrêt).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/01/2017, 08h09
  2. [Débutant] Rien ne se passe quand je lance mon application depuis un autre PC
    Par UnderpaidIntern dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/04/2016, 08h49
  3. Réponses: 15
    Dernier message: 01/10/2013, 15h00
  4. erreur quand je lance l'application Etat HTTP 500
    Par kanebody dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 30/12/2011, 07h52

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