Exécuter des tâches simultanément avec des threads limités
Problème :
Supposons que vous ayez un ensemble de tâches qui doivent être exécutées séquentiellement, avec seulement un maximum de X tâches exécutées à la fois. Traditionnellement, ThreadPool.QueueUserWorkItem() était utilisé pour de telles tâches, mais elle est désormais considérée comme une approche sous-optimale.
Solution utilisant des tâches :
Pour atteindre cette limitation de concurrence en utilisant Tâches, nous pouvons utiliser un objet SemaphoreSlim pour gérer le nombre de threads disponibles. Voici un extrait de code démontrant l'approche :
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task implementation }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
Voici comment fonctionne le code :
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!