/ / Für welche thread-sichere Sammlung im .NET Framework ist ein "Enthält" als API enthalten? - .net, .net-4.0, Parallelität, Thread-Sicherheit

Welche threadsichere Sammlung im .Net Framework hat ein "Contains" als eine seiner API? - .net, .net-4.0, Nebenläufigkeit, Thread-Sicherheit

Ich weiß, dass ConcurrentDictionary eine API hat, die aufgerufen wirdContainsKey, aber ich suche nicht nach einem Wörterbuch. Im Moment verwende ich die Erweiterungsmethode „Contains“ von Enumerable, aber diese Methode ist nicht threadsicher. Gibt es also eine Thread-sichere Sammlung, die eine "Enthält" -Methode hat?

Vielen Dank.

Antworten:

15 für die Antwort № 1

Im Allgemeinen a Contains Die Bedienung ist nicht gleichzeitig sinnvollSammlung. Das Problem ist, dass, sobald Sie feststellen, dass die Auflistung "enthält" oder nicht ein Objekt enthält, die Logik, die Sie als Ergebnis dieser Prüfung ausführen, nicht mehr gültig ist, da ein anderer Thread möglicherweise das unmittelbar folgende Element hinzugefügt oder entfernt hat .

Die ConcurrentDictionary-Klasse enthält diese Methode zur Implementierung von IDictionary, die beabsichtigte Verwendung ist jedoch tatsächlich zu verwenden AddOrUpdate, GetOrAddund die ähnlichen atomaren Methoden.