boost::thread blocage à l'appel join
Bonjour,
J'ai un problème avec les threads boost :
J'ai créé une classe qui contient un thread. J'utilise un pointeur :
Code:
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:
1 2 3
|
thread = thread_ptr (new boost::thread(&MaClasse::threadFct, this));
activeThread = true; |
et la fonction threadée :
Code:
1 2 3 4 5 6
|
void MaClasse::threadFct () {
while (activeThread) {
...
}
} |
Au destructeur de la classe je fais :
Code:
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 ;)