tengo un diccionario estático de sólo lectura . No se harán modificaciones a este diccionario.Sólo lectura Diccionario - varios subprocesos llamando .ContainsKey método
que tienen múltiples hilos de lectura de este diccionario utilizando el .ContainsKey (Key). p.ej.
class MyData
{
private static private IDictionary<int, string> _dictionary = new Dictionary<int, string>();
MyData()
{
// Load Dictionary here
}
public string GetValue(int key)
{
if (_dictionary.ContainsKey(key))
{
return _dictionary[key];
}
}
}
¿Hay algún problema de enhebrado al hacer esto?
Pero a pesar de ello necesitará el ReaderWriterLockSlim mientras intercambia la referencia, ¿verdad? –
@Mark: Escribir una referencia está garantizado que es atómico, pero supongo que probablemente desee marcar el campo 'volátil' para asegurarse de que cualquier otro subproceso vea el cambio. – LukeH
Supongo que estaba pensando que si cambia la referencia mientras está en medio de ejecutar el método ContainsKey, ¿podría causar problemas? –