我有一个管理共享资源的类。现在,由于对资源的访问取决于许多参数,因此在程序的正常执行期间会对该类进行多次实例化和处理。
共享资源不支持并发,因此需要某种锁定。我想到的第一件事是在类中有一个静态实例,并获取它上面的锁,如下所示:
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
这是否有意义,或者您会采用其他方法吗?
答案 0 :(得分:6)
是的,您可以使用静态变量来保护共享资源。
您也可以使用typeof(class) as the expression inside lock。但是,请参阅下面的警告,使用静态变量,它至少在您的班级中受到更多保护。