是否为锁使用受保护的字段(或者我可以在不添加辅助方法的情况下避免受保护的锁,如获取锁等)
本文关键字:受保护 情况下 方法 获取 字段 或者 是否 我可以 添加 | 更新日期: 2023-09-27 18:16:36
我理解不建议将此用于锁,因为对象可以在类外修改,这很难控制。因此,总是建议对锁使用私有字段。(我已经看了:为什么锁(这个){…坏?)
受保护的锁呢?我认为我应该很好,因为我的类是内部的,没有人可以从我的程序集之外的它们派生…
请注意,我不能使用派生类和基类单独的锁,因为在多个类中很难管理,可能会发生死锁。
internal class Base
{
protected object sync = new object();
public string Foo
{
get
{
lock (sync)
{
//set it
}
}
}
}
internal class Derived : Base
{
public string Bar
{
get
{
lock (sync)
{
//set it
//try to get "Foo" (if i use seperate locks-syncobjects
// in derived and base class there can be a ptoential deadlock)
}
}
}
}
你应该为每个字段使用锁对象,我认为这将解决你的问题。
如果你想用同一个锁对象锁定对所有字段的访问,那么你建议在基类 中实现锁机械化。Protected会导致与public相同的问题,因为你不知道谁将继承你的类。例如,如果在获取某个值时,您希望使用基类中的其他字段,则会失败。
So - protected is bad also