Gérer les opérations d'E / S asynchrones simultanées dans .NET
La gestion efficace de nombreuses opérations asynchrones est essentielle pour éviter l'épuisement des ressources. Cet article aborde un scénario commun: effectuer des demandes HTTP parallèles à plusieurs URL tout en limitant le nombre de demandes simultanées.
Tiration du sémaphore asynchrone
La classede .NET SemaphoreSlim
<code class="language-csharp">public async Task MyOuterMethod() { var throttler = new SemaphoreSlim(initialCount: 20); foreach (var url in urls) { await throttler.WaitAsync(); using (var client = new HttpClient()) // Added using statement for proper resource disposal { var html = await client.GetStringAsync(url); } throttler.Release(); } }</code>
attend la disponibilité du sémaphore avant l'exécution et la libère à la fin. Notez l'ajout d'une instruction HttpClient
pour l'élimination appropriée using
. HttpClient
Alternative: planification des tâches basée sur TPL
La bibliothèque parallèle de la tâche (TPL) offre une autre approche. En créant des tâches liées aux délégués et en utilisant un planificateur de tâches personnalisé, vous pouvez gérer la concurrence. MSDN fournit des exemples d'implémentations personnalisées pour une exploration plus approfondie. TaskScheduler
Avantages du sémaphore asynchrone
Le sémaphore asynchrone offre des avantages clés:
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!