Если у меня есть ConcurrentDictionary, мне нужно заблокировать его, когда он петляет через него с помощью foreach
?
ConcurrentDictionary перечисление и блокировка
Ответ 1
Если у меня есть ConcurrentDictionary, нужно ли его блокировать при переходе через него с помощью foreach?
Нет. Из документов для ConcurrentDictionary.GetEnumerator
:
Перечислитель, возвращаемый из словаря, безопасен для одновременного использования с чтением и записью в словарь, однако он не представляет моментальный снимок словаря во времени. Содержимое, отображаемое через счетчик, может содержать изменения, внесенные в словарь после вызова GetEnumerator.
Пока вы с этим согласны, вам не нужна блокировка.