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![]()







Répondre avec citation
et il a pas fini d'attendre. Il faut que ça soit le thread appelant qui utilise cette fonction (et plus spécifiquement lorsque le flot d'exécution du thread appelant ne peut continuer sans la terminaison du thread appelé).



Partager