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()); }
Dans cette implémentation :
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!