Contrôle de la concurrence dans Parallel.ForEach
En programmation parallèle, il peut être avantageux d'exécuter des boucles en parallèle, permettant à plusieurs threads d'effectuer des tâches indépendantes simultanément. Cependant, face à des ressources limitées, il devient essentiel de limiter le nombre de tâches parallèles pour éviter de surcharger le système. Cet article montre comment limiter le parallélisme dans une boucle Parallel.ForEach.
Considérons une situation dans laquelle vous avez une boucle Parallel.ForEach téléchargeant une page Web. Pour vous assurer que votre bande passante n'est pas saturée, vous souhaiterez limiter le nombre de téléchargements simultanés. Les solutions traditionnelles d'exploration du Web ne suffisent pas car vos tâches peuvent impliquer différents types d'opérations.
Parallélisme limite
Pour contrôler le nombre de threads utilisés dans une boucle Parallel.ForEach, vous pouvez utiliser le paramètre MaxDegreeOfParallelism de la classe ParallelOptions. Ce paramètre spécifie le nombre maximum de threads pouvant exécuter la boucle en parallèle.
<code class="language-csharp">Parallel.ForEach( listOfWebpages, new ParallelOptions { MaxDegreeOfParallelism = 4 }, webpage => { Download(webpage); } );</code>
Dans cet exemple, MaxDegreeOfParallelism est défini sur 4, ce qui signifie que jusqu'à quatre threads seront utilisés pour télécharger la page Web simultanément. Cela garantit que votre bande passante ne dépasse pas les limites et évite une pression excessive sur les ressources.
Plus de ressources
Pour plus d'informations sur Parallel.ForEach, consultez la documentation MSDN :
En contrôlant le degré de parallélisme dans une boucle Parallel.ForEach, vous pouvez gérer efficacement l'utilisation des ressources et garantir des performances optimales pour votre application.
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!