Как массовые действия влияют на ConcurrentDictionary? - PullRequest
2 голосов
/ 04 апреля 2020

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

Например, если я запускаю метод, который перебирает каждый элемент в Словаре и редактирует его значение в потоке, и я пытаюсь прочитать значение ключа из другого потока:

Будет ли второй поток получать доступ к снимку словаря? Если нет, получит ли он доступ к обновленной записи, если она уже была обновлена?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020

Параллельные словари являются поточно-ориентированными, к которым могут обращаться несколько потоков одновременно. Операции чтения в словаре выполняются без блокировки, тогда как запись защищена блокировкой. Для деталей реализации, пожалуйста, проверьте ConcurrentDictionary .

0 голосов
/ 04 апреля 2020

Второй поток будет обращаться к обновленному словарю. Все, что ConcurrentDictionary делает, это обеспечивает блокировку коллекции при любых операциях добавления или удаления. Операции чтения не затрагиваются.

Источник

...