Maison > développement back-end > C++ > Comment puis-je exécuter efficacement plusieurs tâches asynchrones en parallèle à l'aide de .NET 4.5 ?

Comment puis-je exécuter efficacement plusieurs tâches asynchrones en parallèle à l'aide de .NET 4.5 ?

Mary-Kate Olsen
Libérer: 2025-01-13 06:27:41
original
936 Les gens l'ont consulté

How Can I Efficiently Run Multiple Async Tasks in Parallel using .NET 4.5?

Exécution efficace de tâches asynchrones parallèles dans .NET 4.5

.NET 4.5 présente des défis lors de la gestion de tâches simultanées et de longue durée. Bien que Task.Run() propose une approche de base, il lui manque l'efficacité et l'élégance nécessaires pour exploiter pleinement les fonctionnalités asynchrones.

Une solution supérieure utilise async/await pour créer des méthodes Sleep véritablement asynchrones, permettant des interruptions et une reprise efficace. Task.WhenAll() attend simultanément l'achèvement de plusieurs tâches.

Exemple de code amélioré :

<code class="language-csharp">public static async Task Go()
{
    Console.WriteLine("Initiating tasks");

    Task<int> task1 = SleepAsync(5000);
    Task<int> task2 = SleepAsync(3000);

    await Task.WhenAll(task1, task2);

    int totalSleepTime = task1.Result + task2.Result;

    Console.WriteLine($"Total sleep time: {totalSleepTime} ms");
}

private static async Task<int> SleepAsync(int ms)
{
    Console.WriteLine($"Sleeping for {ms} ms");
    await Task.Delay(ms);
    Console.WriteLine($"Sleep of {ms} ms COMPLETE");
    return ms;
}</code>
Copier après la connexion

Ce code amélioré utilise async et Task.Delay() pour les délais non bloquants dans SleepAsync. Go lance les deux tâches simultanément via Task.WhenAll(), permettant une exécution parallèle. Les résultats sont accessibles à l'aide de la propriété Result une fois terminé.

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