假设代码:
class Memory {
Dictionary<int, int> m_values;
Object lockObject = new Object();
public int GetData(int key) {
int result;
lock (lockObject) {
if (!m_values.TryGetValue(key, out result)) {
result = VeryExpensiveComputationMethod(key);
m_values[key] = result;
}
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)
这是安全的,但问题是它不是很有效.有些人想过如何使用与.NET 2.0兼容的代码更好地做到这一点?(在最佳方案中,只有等待相同键的相同结果的线程才应该等待)