Maison > développement back-end > C++ > Comment AsyncLazy peut-il garantir qu'une méthode asynchrone critique ne s'exécute qu'une seule fois ?

Comment AsyncLazy peut-il garantir qu'une méthode asynchrone critique ne s'exécute qu'une seule fois ?

Susan Sarandon
Libérer: 2025-01-13 21:41:46
original
827 Les gens l'ont consulté

How Can AsyncLazy Ensure a Critical Async Method Executes Only Once?

Réaliser une initialisation asynchrone à usage unique : une approche supérieure

Un défi de programmation fréquent consiste à exécuter une méthode asynchrone critique une seule fois. Bien que SemaphoreSlim puisse y parvenir, AsyncLazy propose une solution plus élégante et concise.

Présentation d'AsyncLazy : une solution rationalisée

AsyncLazy est essentiellement un Lazy<T> modifié conçu pour les opérations asynchrones. Il initialise paresseusement une valeur lors du premier accès, parfaitement adapté à la gestion des initialisations asynchrones uniques.

Détails de mise en œuvre

Voici comment utiliser AsyncLazy pour vous assurer que votre initialisation asynchrone ne s'exécute qu'une seule fois :

<code class="language-csharp">private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () =>
{
    await DoStuffOnlyOnceAsync();
    return true;
});</code>
Copier après la connexion

Cela crée une instance AsyncLazy encapsulant la logique d'initialisation asynchrone dans DoStuffOnlyOnceAsync. Le résultat est une tâche paresseuse qui s'exécute uniquement au premier accès.

Exemple d'utilisation

Pour déclencher l'initialisation et attendre sa fin, utilisez simplement GetAwaiter() :

<code class="language-csharp">var isInitialized = await asyncLazy.GetAwaiter();</code>
Copier après la connexion

Cela lancera DoStuffOnlyOnceAsync (s'il n'a pas déjà été exécuté) et renverra un booléen indiquant le succès.

Résumé

AsyncLazy fournit une méthode propre et efficace pour assurer une exécution unique d'une méthode asynchrone cruciale. En encapsulant l'initialisation dans une tâche paresseuse, il simplifie le code et offre un moyen convivial d'accéder au résultat.

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