Maison > développement back-end > C++ > Comment puis-je limiter l'exécution de tâches simultanées à 10 à l'aide de tâches C# ?

Comment puis-je limiter l'exécution de tâches simultanées à 10 à l'aide de tâches C# ?

Patricia Arquette
Libérer: 2024-12-30 06:52:10
original
346 Les gens l'ont consulté

How Can I Limit Concurrent Task Execution to 10 using C# Tasks?

Gestion de la concurrence avec des tâches : limiter l'exécution simultanée

Dans votre scénario, vous souhaitez exécuter un ensemble de 100 tâches simultanément, mais autorisez uniquement un maximum de 10 tâches à exécuter à un moment donné. Cela implique de gérer efficacement la simultanéité pour garantir une exécution correcte des tâches et une utilisation correcte des ressources.

Pour répondre à cette exigence à l'aide de Tasks, vous pouvez utiliser l'approche suivante :

// Define a SemaphoreSlim to limit concurrent tasks to 10
SemaphoreSlim maxThread = new SemaphoreSlim(10);

// Iterate through the tasks
for (int i = 0; i < 115; i++)
{
    // Wait for the SemaphoreSlim to allow a new task to execute
    maxThread.Wait();

    // Create a new task and schedule it
    Task.Factory.StartNew(() =>
    {
        // Perform the task's operation
    }, TaskCreationOptions.LongRunning)

    // Release the SemaphoreSlim when the task completes
    .ContinueWith((task) => maxThread.Release());
}
Copier après la connexion

Dans cette implémentation :

  1. Un SemaphoreSlim nommé maxThread est créé avec un nombre initial de 10, représentant le nombre maximum de tâches simultanées autorisé.
  2. La boucle parcourt les 115 tâches.
  3. Au sein de chaque itération, le code attend que le SemaphoreSlim acquière un permis, garantissant que pas plus de 10 tâches ne s'exécutent simultanément.
  4. Une fois le permis acquis, une nouvelle tâche est créée à l'aide de Task.Factory.StartNew. L'option TaskCreationOptions.LongRunning indique que l'exécution de la tâche peut prendre plus de temps.
  5. Une suite est ajoutée à la tâche à l'aide de ContinueWith. Lorsque la tâche est terminée, la suite libère le permis sur le SemaphoreSlim, permettant à une autre tâche en attente de commencer à s'exécuter.

Cette approche garantit que seules 10 tâches s'exécutent à un moment donné, gérant efficacement la concurrence et empêchant les ressources la famine.

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