Quelle est la norme de nos jours, quand on a besoin d'un "thread-safe" de la collection (par exemple Set). Puis-je synchroniser moi-même, ou est-il par nature un "thread-safe" de la collection?
Réponses
Trop de publicités?L' .NET Framework 4.0 introduit plusieurs thread-safe collections dans le Système.Les Collections.Simultanée De L'Espace De Noms:
ConcurrentBag<T>
Représente un "thread-safe", collection non ordonnée d'objets.ConcurrentDictionary<TKey, TValue>
Représente un thread-safe collection de paires clé-valeur qui peut être accédé par plusieurs threads simultanément.ConcurrentQueue<T>
Représente un "thread-safe" premier entré premier sorti (FIFO) de la collection.ConcurrentStack<T>
Représente un "thread-safe" last in-first out (LIFO) de la collection.
D'autres collections .NET Framework ne sont pas thread-safe par défaut et doivent être verrouillées pour chaque opération:
lock (mySet)
{
mySet.Add("Hello World");
}
Pré .net 4.0, la plupart des collections .Net ne sont pas thread-safe. Vous aurez à faire un peu de travail vous-même pour gérer la synchronisation: http://msdn.microsoft.com/en-us/library/573ths2x.aspx
Citation de l'article:
Les Collections de classes peuvent être thread coffre-fort en utilisant les éléments suivants méthodes:
Créer un thread-safe wrapper à l'aide de la Méthode synchronisée, et l'accès à l' collection exclusivement par le biais de cette wrapper.
Si la classe n'a pas une Méthode synchronisée, découlant de la de la classe et de mettre en œuvre un Synchronisé méthode à l'aide de la propriété SyncRoot.
L'utilisation d'un mécanisme de verrouillage, tels que les verrouillage de l'instruction en C# (SyncLock en Visual Basic), sur la SyncRoot propriété lors de l'accès à l' collection.
Synchronisation De La Racine De La Propriété
Instruction Lock
Object thisLock = new Object();
......
lock (thisLock)
{
// Critical code section
}
Dans .net 4.0 a introduit le Système.Les Collections.Simultanée de l'espace de noms
Le Blocage De La Collection
Simultanées Sac
Concurrente De La File D'Attente
Simultanées Dictionnaire
Abordables Outil De Partitionnement
Outil de partitionnement
Partitionnement De T