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:
y a-t-il une technique pour sortir du thread dès que le signal est intercepté ?
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 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; }
Merci.
Partager