/ / Która kolekcja bezpieczna dla wątków w .Net Framework ma "Contains" jako jeden z jej API? - .net, .net-4.0, współbieżność, bezpieczeństwo wątków

Która kolekcja bezpieczna dla wątków w .Net Framework ma "Contains" jako jeden z jej API? - .net, .net-4.0, współbieżność, bezpieczeństwo wątków

Wiem, że ConcurrentDictionary ma API o nazwieZawiera klucz, ale słownik nie jest tym, czego szukam. Na razie używam metody "Contains" z Enumerable, ale ta metoda nie jest bezpieczna dla wątków. Czy istnieje kolekcja bezpieczna dla wątków z metodą "zawiera"?

Dzięki.

Odpowiedzi:

15 dla odpowiedzi № 1

Ogólnie rzecz biorąc, a Contains operacja nie jest zbyt przydatna w przypadku współbieżnościkolekcja. Problem polega na tym, że gdy tylko określisz, że kolekcja zawiera lub nie zawiera jakiegoś obiektu, logika, którą wykonujesz w wyniku tego sprawdzenia, nie jest już ważna, ponieważ inny wątek mógł dodać lub usunąć element bezpośrednio po nim. .

Klasa ConcurrentDictionary zawiera tę metodę implementacji IDictionary, ale zamierzone użycie jest właściwie użyteczne AddOrUpdate, GetOrAddi podobne metody atomowe.