【发布时间】:2010-10-17 04:15:57
【问题描述】:
在以下代码中:
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) ContainsKey 线程安全吗? IOW,如果在另一个线程向字典中添加内容时正在执行该方法会发生什么? 2)第一次返回cache[key],有没有可能返回乱码?
TIA,
MB
【问题讨论】:
标签: c# multithreading dictionary