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
Mary-Kate Olsenoriginal
2025-01-13 06:27:41982parcourir

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>

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!

Déclaration:
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