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:
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:
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