Maison > développement back-end > C++ > Comment puis-je attendre de manière asynchrone une tâche avec un temps mort?

Comment puis-je attendre de manière asynchrone une tâche avec un temps mort?

Linda Hamilton
Libérer: 2025-02-01 10:05:14
original
831 Les gens l'ont consulté

How Can I Asynchronously Wait for a Task with a Timeout?

Gestion des tâches asynchrones: implémentation de délais

La programmation asynchrone efficace nécessite la gestion des tâches. Parfois, cependant, nous devons imposer des délais à ce processus d'attente. Cet article détaille une méthode pour attendre de manière asynchrone un Task<T> tout en respectant les contraintes de délai d'attente.

La solution: combinant Task.WhenAny() et Task.Delay()

Le noyau de cette solution réside dans l'utilisation combinée de Task.WhenAny() et Task.Delay(). Task.WhenAny(task1, task2) attend la première des deux tâches à terminer. Nous en levons en créant un Task.Delay() représentant notre période de délai d'expiration.

Task.WhenAny() surveille à la fois la tâche cible et la tâche de délai d'expiration simultanément. Si la tâche cible se termine avant le délai d'expiration, Task.WhenAny() renvoie la tâche cible. Sinon, il renvoie la tâche Task.Delay(), indiquant le délai d'expiration.

Extension de la solution: incorporer l'annulation

Pour un contrôle amélioré, envisagez d'ajouter un support d'annulation. Passez un jeton d'annulation à la fois à la tâche cible et Task.Delay(). Cela permet une annulation immédiate de l'une ou l'autre source. Une manipulation minutieuse de l'annulation et de l'achèvement des tâches est cruciale pour prévenir les conditions de course.

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!

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