KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
In the following code: public class StringCache { private readonly object lockobj = new object(); private readonly Dictionary<int, string> cache = new Dictionary<int, string>(); public string GetMemberInfo(int key) { if (cache.ContainsKey(key)) return cache[key]; lock (lockobj) { if (!cache.ContainsKey(key)) cache[key] = GetString(key); } return cache[key]; } private static string GetString(int key) { return "Not Important"; } } 1) Is ContainsKey thread safe? IOW, what happens if that method is executing when another thread is adding something to the dictionary? 2) For the first return cache[key], is there any chance that it could return a garbled value? TIA, MB
Tags (comma-separated)
Save Edits
Cancel