W kontekście niniejszego sprawozdania,Wyjaśnienie zapisu i odczytu na C# Dictionary
A Dictionary może obsługiwać jednocześnie wielu czytelników, jak długo jako zbiór nie jest modyfikowany. Mimo to wyliczenie poprzez kolekcję nie jest z natury procedurą bezpieczną dla wątków. W rzadkich przypadku gdy wyliczenie twierdzi z zapisem dostęp kolekcja musi być zamknięty podczas całego wyliczenie. Aby umożliwić dostęp do kolekcji przez wiele wątków do czytania i pisania , musisz wykonać własną synchronizację.
Co oznacza odczyt i zapis? Rozumiem, że odczyt to operacja, która wyszukuje klucz i zawiera odniesienie do jego wartości, a zapis to operacja, która dodaje lub usuwa parę wartości klucza ze słownika. Jednak nie mogę znaleźć niczego rozstrzygającego w tej kwestii.
Więc pytanie brzmi, realizując bezpieczną słownika wątek, to operacja, która aktualizuje wartość do istniejącego klucza w słowniku należy rozważyć czytelnika lub pisarza? Planuję mieć wiele wątków uzyskujących dostęp do unikalnych kluczy w słowniku i modyfikowanie ich wartości, ale wątki nie będą dodawać/usuwać nowych kluczy.
Oczywistą konsekwencją, zakładając modyfikację istniejącej wartości, nie jest operacja zapisu w słowniku, jest to, że moja implementacja dictionay safe dictionay może być dużo bardziej efektywna, ponieważ nie potrzebowałbym uzyskać wyjątkowego blokady za każdym razem Próbuję zaktualizować wartość do istniejącego klucza.
Używanie ConcurrentDictionary z .Net 4.0 nie jest opcją.
To naprawdę komentarz, a nie odpowiedź na pytanie. Użyj "dodaj komentarz", aby wystawić opinię dla autora. – SliverNinja
@SliverNinja, wydaje mi się, że ta odpowiedź odnosi się do podstawowego pytania "czy operacja, która aktualizuje wartość istniejącego klucza w słowniku, powinna być uważana za czytelnika lub pisarza?". – binki