Bonjour,

J'ai un problème avec les threads boost :

J'ai créé une classe qui contient un thread. J'utilise un pointeur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
typedef boost::shared_ptr <boost::thread> thread_ptr;
thread_ptr thread;
Dans le constructeur de la classe je lance une fonction qui fait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
thread = thread_ptr (new boost::thread(&MaClasse::threadFct, this));
activeThread = true;
et la fonction threadée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
void MaClasse::threadFct () {
while (activeThread) {
...
}
}
Au destructeur de la classe je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
mutex.lock ();
activeThread = false;
mutex.unlock ();
 
thread->join();
Et c'est là que ça bloque. D'après le log le thread sort bien de la fonction MaClasse::threadFct, alors je ne comprend pas pourquoi le join puisse bloquer comme je ne demande plus rien au thread.
Si quelqu'un avait une idée