La version simplifiée de mon code se présente comme suit:Discussion Boost ne pas détacher quand il est créé en fonction de membre d'une classe
class threadCreator
{
void threadFunction(void){
// use some private data members and do something.
}
void createThread(void){
boost::thread myThread(
boost::bind(&threadCreator::threadFunction,this));
myThread.detach();
}
}
Ce programme attend le thread pour terminer l'exécution, puis quitte, même si J'appelle une méthode de détachement sur le fil. Si je supprime la classe et crée mon thread juste dans une fonction, cela semble fonctionner comme prévu.
Je pense que cela a quelque chose à voir avec l'objet qui reste en mémoire. Cependant, je suis apprenant C++ et je ne sais pas comment résoudre ce problème.
vous êtes témoin d'un RAII très probable. un destructeur implicite est appelé lorsque votre fonction se termine sur les objets alloués sur la pile. également, les appels de destructeur de thread se détachent également, donc je ne sais pas quel est l'effet de l'appel de deux fonctions de détachement. essayez d'allouer vos threads en utilisant new à la place – Anycorn