75 votes

Quelle est la différence entre SynchronizedCollection<T> et les autres collections concurrentes ?

Comment SynchronizedCollection<T> et les autres collections concurrentes de la System.Collections.Concurrent diffèrent l'un de l'autre, à l'exception de Concurrent Collections qui est un espace de nom et de SynchronizedCollection<T> être une classe ?

SynchronizedCollection<T> et toutes les classes de Concurrent Collection fournissent des collections à sécurité thread. Alors comment décider quand utiliser l'une plutôt que l'autre, et pourquoi ?

Toute aide serait profondément appréciée.

Gracias

86voto

Cody Gray Points 102261

El SynchronizedCollection<T> classe a été introduite en .NET 2.0 pour fournir une classe de collection à sécurité thread. Pour ce faire, elle utilise le verrouillage, de sorte que vous disposez essentiellement d'un fichier List<T> où chaque accès est enveloppé dans un lock déclaration.

El System.Collections.Concurrent est beaucoup plus récent. Il n'a été introduit qu'en .NET 4.0 et comprend un ensemble de choix considérablement amélioré et plus diversifié. Ces classes n'utilisent plus de verrous pour assurer la sécurité des threads, ce qui signifie qu'elles devraient mieux s'adapter à une situation où plusieurs threads accèdent simultanément à leurs données. Cependant, une classe implémentant la classe IList<T> est notamment absente de ces options.

Ainsi, si vous visez la version 4.0 de .NET Framework, vous devez utiliser l'une des collections fournies par le module de gestion de l'environnement. System.Collections.Concurrent dans la mesure du possible. Tout comme pour le choix entre les différents types de collections fournis dans la bibliothèque de l System.Collections.Generic espace de noms Vous devrez choisir celui dont les caractéristiques correspondent le mieux à vos besoins spécifiques.

Si vous ciblez une ancienne version du .NET Framework ou si vous avez besoin d'une classe de collection qui implémente la fonction IList<T> vous devrez opter pour l'interface SynchronizedCollection<T> classe.

Cet article sur MSDN vaut également la peine d'être lu : Quand utiliser une collection sécurisée par des fils

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X