Si tiene varios hilos que acceden al Diccionario, entonces necesita bloquear las actualizaciones y la búsqueda. La razón por la que necesita bloquear la búsqueda es que podría haber una actualización al mismo tiempo que hace la búsqueda, y el diccionario podría estar en un estado incoherente durante la actualización. Por ejemplo, imagine que su haber un hilo haciendo esto:
if (myDictionary.TryGetValue(key, out value))
{
}
y un hilo separado está haciendo esto:
myDictionary.Remove(key);
Lo que puede ocurrir es que el hilo haciendo el TryGetValue
determina que el artículo esté en el diccionario, pero antes de que pueda recuperar el elemento, el otro hilo lo elimina.El resultado sería que el hilo que realiza la búsqueda arrojaría una excepción o TryGetValue
devolvería true
pero el value
sería null
o posiblemente un objeto que no coincida con la clave.
Eso es solo una cosa que puede suceder. Algo similarmente desastroso puede suceder si está realizando una búsqueda en un hilo y otro hilo agrega el valor que está tratando de buscar.
si su pregunta es seria y se refiere a programas multiproceso, por favor asegúrese de mencionarlo explícitamente en su pregunta. –
mi pregunta no era tan seria como tu comentario. – DarthVader