Bonjour,
J'ai un problème avec les threads boost :
J'ai créé une classe qui contient un thread. J'utilise un pointeur :
Dans le constructeur de la classe je lance une fonction qui fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3typedef boost::shared_ptr <boost::thread> thread_ptr; thread_ptr thread;
et la fonction threadée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 thread = thread_ptr (new boost::thread(&MaClasse::threadFct, this)); activeThread = true;
Au destructeur de la classe je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void MaClasse::threadFct () { while (activeThread) { ... } }
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 mutex.lock (); activeThread = false; mutex.unlock (); thread->join();
Si quelqu'un avait une idée![]()
Partager