bonjour à tous,
j'ai fait une application de base avec le code QML :
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
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() } } } }
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.
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 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
Partager