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