Pouvez-vous annuler un thread Boost comme vous le feriez avec un pthread? J'écris un chien de garde simple pour terminer les threads de travail s'ils se plantent et il ne semble pas y avoir moyen d'annuler simplement un thread dans la bibliothèque Boost Thread.Boost Thread Annulation
7
A
Répondre
10
Ils ne prennent pas en charge l'annulation, ce qui est une bonne chose car cela peut causer toutes sortes de problèmes subtils. Jetez un oeil à la section des documents qui couvrent l'interruption de thread et l'exception boost :: thread_interrupted et faites quelque chose qui vous permet d'accomplir ce que vous voulez tout en nettoyant les choses.
2
Ils ne prennent pas en charge l'annulation de la boîte (comme l'a souligné Canard), mais en fonction du traitement passe à l'intérieur de votre thread de travail (s), j'envisager d'utiliser un boost::condition
d'informer le fil qu'il devrait finir (proprement) à la première occasion.
Questions connexes
- 1. Crash avec boost :: thread
- 2. boost: thread se bloque compilateur C++ microsoft
- 3. accéder à la variable membre de l'objet thread boost
- 4. Boost Jam ne produit pas Thread Library sur Windows
- 5. Les tests Intellisense boost :: boost :: boost :: boost :: boost :: boost :: classname ....... pourquoi?
- 6. Annulation de l'appel sur le thread en appuyant sur ctrl + c
- 7. Annulation d'un appel Socket.xxxxAsync
- 8. Annulation (HTML) Image Téléchargements
- 9. Boost équivalent de ManualResetEvent?
- 10. Annulation gracieuse d'une requête Ajax
- 11. Annulation prématurée d'une boucle While
- 12. Annulation d'une connexion d'authentification HTTP?
- 13. JavaScript: Annulation d'événements inter-navigateur
- 14. iPhone OS 3.0 annulation dans
- 15. comment boost :: fonction et boost :: bind travail
- 16. Problèmes avec boost :: ptr_vector et boost :: tout
- 17. Est-ce que boost est shared_ptr <XX> thread-safe?
- 18. Comment faire pour convertir le pool de thread Boost de fifo à la priorité?
- 19. C++: problème de gestion des exceptions de thread croisé avec boost :: exception
- 20. boost microsec_time_clock.hpp avertissement C4244
- 21. Boost Documentation
- 22. Annulation d'un événement WPF TextBox modifié
- 23. Annulation d'un appel GWT côté serveur
- 24. Annulation de SelectedIndexChanged dans WinForm ListView
- 25. Annulation de l'appel asynchrone à distance
- 26. Annulation de la procédure stockée Aysnchronous
- 27. C# Annulation du travail du fondeur
- 28. Utilisation de Boost Graph Library: property_map dans boost :: mutable_queue
- 29. C++ Laisser un thread d'accélération attendre 1 seconde
- 30. BackgroundWorker OnWorkCompleted lève l'exception de thread-thread
Il semble que l'interruption du thread ne vous aidera pas si le thread est coincé dans une boucle, ce qui est l'une des choses que j'essaie de protéger. Alors que j'abandonne la portabilité, je commence à penser que je préfère utiliser un gestionnaire de nettoyage pthread. –
Ou placez un ou des points d'interruption quelque part dans la (les) boucle (s). Il ne devrait pas être beaucoup de performance, surtout si le fil est déjà long. Et le reste de l'infrastructure d'interruption est déjà en place. – Duck