Model SynchronizedCollection<T>
class został wprowadzony jako pierwszy w .NET 2.0, aby zapewnić bezpieczną dla wątków klasę kolekcji. Robi to poprzez blokowanie, dzięki czemu zasadniczo masz List<T>
, gdzie każdy dostęp jest zawijany w oświadczeniu lock
.
Przestrzeń nazw jest dużo nowsza. Został wprowadzony dopiero w .NET 4.0 i zawiera znacznie ulepszony i bardziej różnorodny zestaw opcji. Klasy te nie używają już blokad w celu zapewnienia bezpieczeństwa wątków, co oznacza, że powinny one lepiej skalować się w sytuacji, w której wiele wątków uzyskuje dostęp do ich danych jednocześnie. Jednak klasa implementująca interfejs IList<T>
jest szczególnie nieobecna wśród tych opcji.
W przypadku wersji 4.0 systemu .NET Framework należy w miarę możliwości korzystać z jednej z kolekcji udostępnianych w przestrzeni nazw System.Collections.Concurrent
. Podobnie jak przy wyborze między różnymi rodzajami kolekcji podanymi w System.Collections.Generic
namespace, musisz wybrać ten, którego cechy i cechy najlepiej odpowiadają Twoim konkretnym potrzebom.
Jeśli kierujesz reklamy na starszą wersję platformy .NET Framework lub potrzebujesz klas kolekcji, która implementuje interfejs IList<T>
, musisz wybrać klasę SynchronizedCollection<T>
.
Ten artykuł w witrynie MSDN jest również warto się zapoznać: When to Use a Thread-Safe Collection
Sprawdźcie tutaj: http://stackoverflow.com/questions/1946520/why-are-there-no-concurrent-collections-in-c – StuartLC