Maison >développement back-end >C++ >Comment limiter les tâches simultanées en C# ?

Comment limiter les tâches simultanées en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 04:08:10442parcourir

How to Limit Concurrent Tasks in C#?

Restriction des tâches simultanées en C#

Dans la programmation multithread et asynchrone, le contrôle du nombre de tâches parallèles peut améliorer les performances et maintenir la stabilité. Cette question explore comment limiter le nombre maximum de tâches simultanées en C#.

Limiter la concurrence

Le bloc de code fourni illustre la création d'une nouvelle tâche pour chaque message d'entrée . Cette approche peut conduire à une utilisation excessive des ressources si le nombre de messages est important. Pour limiter la simultanéité, envisagez d'utiliser Parallel.ForEach avec MaxDegreeOfParallelism.

Parallel.ForEach(messages, new ParallelOptions { MaxDegreeOfParallelism = 10},
msg =>
{
     // logic
     Process(msg);
});

En spécifiant MaxDegreeOfParallelism sur 10, jusqu'à 10 messages seront traités simultanément, réduisant ainsi la pression sur les ressources.

Maintenir Séquence

Cependant, ceci Cette approche ne garantit pas le traitement des messages dans le même ordre que la collection originale. Pour garantir l'ordre, utilisez SequentialQuery à partir de la bibliothèque Parallel LINQ :

var processedMessages = messages.AsParallel()
    .AsOrdered()  // Preserves order
    .Select(msg => Process(msg))
    .ToList(); // Forces execution

Cela garantit que les messages sont traités dans le même ordre que la collection d'entrée, tout en tirant parti du parallélisme pour plus d'efficacité.

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