9
我有一个管理共享资源的类。现在,由于对资源的访问依赖于许多参数,因此在正常执行程序期间,该类将被实例化并处理好几次。在非静态类中锁定静态变量是否安全?
共享资源不支持并发,所以需要某种锁定。那我脑子里浮现的第一件事情是有一个静态实例中的类,并且获取锁就可以了,就像这样:
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
这是否有意义,或者你会用另一种方法?
我不会锁定typeof(class),因为如果其他人锁定在同一类型上,可能会发生死锁。至少,不要使用公共类型。 – driis 2010-04-01 13:51:06
@driis:同意,在答案中加了一个注释。谢谢。 – 2010-04-01 14:01:33
对于“是的,你可以......”+1,对'typeof(class)'锁定的建议,-1,所以总数为0. – LukeH 2010-04-01 14:27:38