나는 정적 읽기 전용 사전이 있습니다. 아니요이 사전에 대한 수정이 이루어집니다.읽기 전용 사전 - 여러 스레드 호출 .ContainsKey 메서드
.ContainsKey (Key)를 사용하여이 사전에서 읽는 스레드가 여러 개 있습니다. 예 :
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];
}
}
}
이렇게하는 데 문제가 있습니까?
를 사용할 수 있습니다하지만 당신은 여전히 필요 당신은 같은 시간에 데이터를 기록 할 수 있었다 (그리고 당신은 .NET 4.0을 사용했다) 경우 참조를 바꾸는 동안 ReaderWriterLockSlim을 사용 하시겠습니까? –
@Mark : 참조를 작성하는 것은 원자 적으로 이루어 지지만 다른 스레드가 변경 사항을 볼 수 있도록 '휘발성'필드를 표시하고 싶을 것입니다. – LukeH
ContainsKey 메서드를 실행하는 도중에 참조를 바꾼다면 문제가 발생할 수 있다고 생각하고 있었나요? –