3
我在服務器端有一個類。鎖定靜態變量
public class Sample
{
private enum Status
{
NotEvaluated,
Yes,
No
}
private static object _lockObj = new object();
private static Status _status = Status.NotEvaluated;
public static Status GetStatus()
{
if (_status == Status.NotEvaluated)
{
lock (_lockObj)
{
if (_status == Status.NotEvaluated)
{
//some evaluation code which sets status to either Yes/No;
_status = Status.Yes;
}
}
}
return _status;
}
}
上面的鎖定機制有什麼不對嗎?我需要鎖定嗎?因爲它是服務器端的(多個請求將在那裏),並且變量是靜態的,我認爲它應該在評估時被鎖定。
糾正我,如果我錯了。
感謝
我猜OP試圖通過時,他知道他沒有不鎖進行優化,但鎖()是相當輕巧的 - 這是不是你需要做的優化。 – DanTheMan 2011-06-30 16:20:50