Stopper proprement un QThread avec un signal/slot
bonjour,
j'écris une application qui acquiert des valeurs de capteurs depuis un serveur HTTP.
Ces relevés se font dans un QThread à une période de 30 minutes et au bout d'un temps t, je stoppe ce thread en lui envoyant un signal qui positionne un booléen pour exploiter les relevés. J'utilise un mutex pour émettre le signal hors temps d'acquisition.
Mon problème: quand je stoppe, dans le pire des cas, j'attends 29 minutes et des secondes que le thread se termine effectivement.
Mon code:
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
|
void Worker_thread::run()
{
//faire tourner en boucle, arrêt sur un signal provenant de MainWindow
do
{
//prendre le mutex
//emettre requête
//acquérir données
//traiter
//stocker
//relâcher le mutex
sleep(1800);
}
while(theEnd == false);
}
/*
* slot appellé par le signal theEnd de MainWindow
*/
void Worker_thread::stop_thread()
{
theEnd = true;
} |
y a-t-il une technique pour sortir du thread dès que le signal est intercepté ?
Merci.