मैं IDEDIA से प्राप्त करके और एक निजी SyncRoot ऑब्जेक्ट को परिभाषित करके C # में एक थ्रेड-सुरक्षित शब्दकोश को लागू करने में सक्षम था:
public class SafeDictionary<TKey, TValue>: IDictionary<TKey, TValue>
{
private readonly object syncRoot = new object();
private Dictionary<TKey, TValue> d = new Dictionary<TKey, TValue>();
public object SyncRoot
{
get { return syncRoot; }
}
public void Add(TKey key, TValue value)
{
lock (syncRoot)
{
d.Add(key, value);
}
}
// more IDictionary members...
}
मैं तब अपने उपभोक्ताओं (कई थ्रेड्स) पर इस SyncRoot ऑब्जेक्ट पर लॉक करता हूं:
उदाहरण:
lock (m_MySharedDictionary.SyncRoot)
{
m_MySharedDictionary.Add(...);
}
मैं इसे काम करने में सक्षम था, लेकिन इसके परिणामस्वरूप कुछ बदसूरत कोड थे। मेरा प्रश्न यह है कि क्या थ्रेड-सेफ डिक्शनरी को लागू करने का एक बेहतर, अधिक सुरुचिपूर्ण तरीका है?