Trong đoạn mã sau:containsKey Chủ đề Safe
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) là chủ đề containsKey an toàn không? IOW, điều gì sẽ xảy ra nếu phương thức đó đang thực hiện khi một luồng khác đang thêm thứ gì đó vào từ điển? 2) Đối với bộ nhớ cache trả về đầu tiên [key], có bất kỳ cơ hội nào mà nó có thể trả về một giá trị bị cắt xén không?
TIA,
MB
Không tìm thấy liên kết (404). – avenmore