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!