这个简单的缓存类是否需要线程同步...如果我删除了锁_syncLock语句会遇到任何问题吗?我想我可以删除锁作为参考应正确更新对吗? ...我认为如果客户端代码遍历GetMyDataStructure方法并且被替换,会发生whar吗?这个简单的缓存类是否需要线程同步?
编辑:我已经用TryGetValue样式方法替换了GetMyDataStructure并删除了所有的锁定....这应该没问题吧?
public bool TryGetValue(int id, out MyDataStructure myDataStructure)
{
return _cache.TryGetValue(id, out myDataStructure);
}
谢谢!
public sealed class Cache
{
private readonly object _syncLock = new object();
private IDictionary<int, MyDataStructure> _cache;
public Cache()
{
Refresh();
}
public void Refresh()
{
lock (_syncLock)
{
_cache = DAL.GetMyDataStructure();
}
}
public IDictionary<int, MyDataStructure> **GetMyDataStructure**()
{
lock (_syncLock)
{
return _cache;
}
}
}
您需要回顾一下您提出的问题并选择一个有助于您的答案,它鼓励人们帮助您,因为我们获得了提供最佳答案的声望点。它看起来像一个下方的勾选框,您可以在上面或下面投票。 – 2010-05-26 10:28:56