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

Merci.