Могут ли несколько потоков изменить словарь? - PullRequest
3 голосов
/ 08 апреля 2010

В C # могут ли несколько потоков читать и записывать в словарь, если каждый поток имеет доступ только к одному элементу в словаре и никогда не обращается к другому?

Ответы [ 2 ]

4 голосов
/ 08 апреля 2010

Нет, словарь не является потокобезопасным.

За исключением изменения содержимого ссылочного типа (объекта), который хранится как значение в словаре.

В .NET 4 у нас будет System.Collections.Concurrent.ConcurrentDictionary.

3 голосов
/ 08 апреля 2010

Нет, они не могут. словарь не является потокобезопасным:

Словарь (TKey, TValue) может поддерживать несколько читателей одновременно, как долго так как коллекция не изменена. Несмотря на это, перечисляя через коллекция изначально не потокобезопасная процедура. В редких случай, когда утверждается перечисление с доступом записи, коллекция должен быть заблокирован в течение всего перечисление. Разрешить сбор быть доступным для нескольких потоков для читать и писать, вы должны реализовать собственную синхронизацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...