Quel est le meilleur moyen de supprimer l'objet boost :: thread juste après son travail?
Je créer boost::thread
objet avec un new
de l'opérateur et de poursuivre sans attendre ce fil pour terminer son travail:
void do_work()
{
//perform some i/o work
}
boost::thread *thread = new boost::thread(&do_work);
Je pense qu'il est nécessaire de supprimer thread
lorsque le travail est effectué. Quel est le meilleur moyen pour cela, sans explicitement d'attente pour la fin des threads?
source d'informationauteur itsvetkov
Vous devez vous connecter pour publier un commentaire.
La
boost::thread
objet de la vie et de la thread natif de la vie ne sont pas liés. Leboost::thread
objet peut aller hors de portée à tout moment.De la
boost::thread
classe la documentationModifier: Si vous avez juste besoin de commencer une discussion et de ne jamais invoquer
join
vous pouvez utiliser le fil du constructeur en fonction:Cependant, je vous suggère de ne pas vous le faire, même si vous pensez que vous êtes sûr que le fil se terminer avant
main()
.Vous pouvez utiliser
Une fois que le fil s'est détaché, il n'est plus possédé par le
boost::thread
objet; l'objet peut être détruit et le fil de continuer à fonctionner. Leboost::thread
destructeur appelle aussidetach()
si l'objet possède un thread en cours d'exécution, afin de laissert
détruit aura le même résultat.Je vous suggère d'utiliser boost::shared_ptr, de sorte que vous ne prenez pas soin quand à supprimer le fil de l'objet.
Vous devriez jeter un oeil à fil interruption.
Cet article est bon aussi.
http://www.boost.org/doc/libs/1_38_0/doc/html/thread/thread_management.html