J'ai un static readonly dictionnaire. No Des modifications seront apportées à ce dictionnaire.Lecture seule Dictionnaire - plusieurs threads appelant la méthode .ContainsKey
J'ai plusieurs threads qui lisent dans ce dictionnaire en utilisant le .ContainsKey (Key). par exemple.
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];
}
}
}
Y a-t-il des problèmes de threading dans cette opération?
Mais vous auriez encore besoin ReaderWriterLockSlim lors de l'échange de la référence, non? –
@Mark: écrire une référence est garanti être atomique, mais je suppose que vous voudrez probablement marquer le champ «volatile» pour s'assurer que tous les autres threads voient le changement. – LukeH
Je suppose que je pensais que si vous échangez la référence alors qu'il est au milieu de l'exécution de la méthode ContainsKey, cela pourrait causer des problèmes? –