Maison > développement back-end > C++ > Dois-je me débarrasser des tâches dans les opérations en arrière-plan Fire-and-Forget ?

Dois-je me débarrasser des tâches dans les opérations en arrière-plan Fire-and-Forget ?

Mary-Kate Olsen
Libérer: 2025-01-03 07:24:40
original
741 Les gens l'ont consulté

Do I Need to Dispose of Tasks in Fire-and-Forget Background Operations?

L'élimination des tâches est-elle nécessaire pour les tâches en arrière-plan déclenchées et oubliées ?

Lors de l'exécution de tâches déclenchées et oubliées sur des threads en arrière-plan, les développeurs utilisent souvent la méthode Task Parallel Library (TPL) Task.Factory.StartNew(). Cette méthode renvoie un objet Task, ce qui soulève des inquiétudes quant à son élimination appropriée.

la documentation msdn suggère d'appeler Dispose() avant de publier la dernière référence à une tâche. Cependant, attendre la fin de la tâche pour appeler cette méthode annule l'objectif de l'exécution en arrière-plan.

Discussion

Selon Stephen Toub de l'équipe Microsoft pfx, un objet Task peut envelopper un handle d’événement en attendant sa fin. Cependant, si des continuations sont utilisées, ce handle n’est jamais alloué. Par conséquent, la finalisation est une méthode de nettoyage adéquate.

Mise à jour (octobre 2012)

Article de blog de Toub "Dois-je me débarrasser des tâches ?" apporte des précisions supplémentaires. Dans .NET 4.5, une tâche alloue uniquement le handle d’attente interne lorsque AsyncWaitHandle est explicitement utilisé. De plus, Task n'a pas de finaliseur ; tout handle alloué est enveloppé dans un objet avec un finaliseur. Cela signifie qu'il n'est pas nécessaire de supprimer la plupart des objets Task.

Conclusions

Dans la plupart des cas, il est acceptable de s'abstenir d'appeler Dispose() sur les objets Task utilisés pour le feu. -et oubliez les tâches en arrière-plan. La finalisation suffira généralement pour le nettoyage des ressources. Cependant, si AsyncWaitHandle est utilisé ou si l'application dépend fortement de ces tâches, une suppression explicite peut être justifiée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal