我想知道一个类是否从另一个类继承,让类共享一个在基类中定义的锁对象或拥有一个锁对象在每个继承级别定义。什么是在继承类中使用锁的最佳做法
一个非常简单的对类的每个电平的锁定对象的示例
public class Foo {
private object thisLock = new object();
private int ivalue;
public int Value {
get {
lock(thisLock) {
return ivalue;
}
}
set {
lock(thisLock) {
ivalue= value;
}
}
}
}
public class Foo2: Foo {
private object thisLock2 = new object();
public int DoubleValue {
get {
lock(thisLock2) {
return base.Value * 2;
}
}
set {
lock(thisLock2) {
base.Value = value/2;
}
}
}
}
public class Foo6: Foo2 {
private object thisLock6 = new object();
public int TripleDoubleValue {
get {
lock(thisLock6) {
return base.DoubleValue * 3;
}
}
set {
lock(thisLock6) {
base.DoubleValue = value/3;
}
}
}
}
共享锁定对象的一个非常简单的例子
public class Foo {
protected object thisLock = new object();
private int ivalue;
public int Value {
get {
lock(thisLock) {
return ivalue;
}
}
set {
lock(thisLock) {
ivalue= value;
}
}
}
}
public class Foo2: Foo {
public int DoubleValue {
get {
lock(thisLock) {
return base.Value * 2;
}
}
set {
lock(thisLock) {
base.Value = value/2;
}
}
}
}
public class Foo6: Foo2 {
public int TripleDoubleValue {
get {
lock(thisLock) {
return base.DoubleValue * 3;
}
}
set {
lock(thisLock) {
base.DoubleValue = value/3;
}
}
}
}
哪个例子是管理锁定的首选方式在继承类中?
.NET反射器在我装入的程序集中发现了106个(!)的“ThisLock”属性。所以我想这可以合理地称为*最佳做法*。 :-) – dtb 2010-05-21 15:14:34