ConcurrentDictionary перечисление и блокировка - программирование

ConcurrentDictionary перечисление и блокировка

Если у меня есть ConcurrentDictionary, мне нужно заблокировать его, когда он петляет через него с помощью foreach?

4b9b3361

Ответ 1

Если у меня есть ConcurrentDictionary, нужно ли его блокировать при переходе через него с помощью foreach?

Нет. Из документов для ConcurrentDictionary.GetEnumerator:

Перечислитель, возвращаемый из словаря, безопасен для одновременного использования с чтением и записью в словарь, однако он не представляет моментальный снимок словаря во времени. Содержимое, отображаемое через счетчик, может содержать изменения, внесенные в словарь после вызова GetEnumerator.

Пока вы с этим согласны, вам не нужна блокировка.