在访问集合的简单属性时,锁定有什么好处或坏处,特别是.Count
?(这是可取的,不可取的,还是一点也不重要?)(当然我需要在任何写入或读取时锁定它)
private Dictionary<string, bool> database = new Dictionary<string, bool>();
private object databaseLock = new object();
public int Count
{
get
{
lock (databaseLock)
{
return database.Count;
}
}
}
我个人认为这可能是可取的,只是为了打破需要锁定访问字典的约定,而不是出于任何实际原因[*]。此外,在您访问的任何属性中,可能会有比预期更多的操作。
[*] 知道在 C# 中的(大多数)集合中,Count
它是一个由它维护的整数,因此应该始终是原子操作