這個簡單的緩存類是否需要線程同步...如果我刪除了鎖_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