2012-01-23 13 views

Odpowiedz

10

Nie, nie są bezpieczne dla wątków (bez wykonywania własnego blokowania).

Zamiast tego użyj jednej z kolekcji Concurrent.

Thread-Safe Collections

Przestrzeń nazw System.Collections.Concurrent zapewnia kilka klas kolekcji thread-safe, które powinny być stosowane w miejsce odpowiednich typów w System.Collections i System.Collections.Generic nazw ilekroć wiele wątków jest uzyskujących dostęp do kolekcji jednocześnie.

+1

Zastanawiam się, dlaczego nie mamy klasy concurentList –

+0

http://stackoverflow.com/questions/703990/why-is-c-sharp-list-not-thread-safe –

+0

http://blogs.msdn.com/ b/jaredpar/archive/2009/02/11/why-are-thread-safe-collections-so-hard.aspx –

3

Dokumentacja dla całej List<T> klasie ma segment na bezpieczeństwo wątku:

publiczne statyczny (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne dla wątków. Dowolni członkowie instancji nie mogą zagwarantować bezpieczeństwa w wątku.

+1

To prawda, że ​​jest to dokumentacja na płycie głównej, która jest praktycznie na każdym (jeśli nie każdym) typie .NET . –

+0

Dobrze zaznaczyć. To wyjaśnia, dlaczego nie ma konkurentów. Lista jest już współbieżna. +1 –

+0

Właściwie nie. Nie ma wskaźnika, że ​​jest bezpieczny dla wątków. Lista nie zawiera żadnej metody statycznej. –

Powiązane problemy