c# - threading - Enumeración y bloqueo concurrente
thread programming c# (1)
Si tengo un ConcurrentDictionary, ¿necesito bloquearlo cuando lo hago en bucle a través de foreach
?
Si tengo un ConcurrentDictionary, ¿necesito bloquearlo cuando lo hago en bucle a través de foreach?
No. De los documentos para ConcurrentDictionary.GetEnumerator
:
El enumerador devuelto desde el diccionario es seguro de usar al mismo tiempo que lee y escribe en el diccionario, sin embargo, no representa una instantánea del momento. Los contenidos expuestos a través del enumerador pueden contener modificaciones hechas al diccionario después de llamar a GetEnumerator.
Mientras esté de acuerdo con eso, no necesita ningún tipo de bloqueo.