Dar*_*era 9 .net c# concurrency static locking
我有一个管理共享资源的类.现在,由于对资源的访问依赖于许多参数,因此在程序的正常执行期间,该类被实例化并被多次处理.
共享资源不支持并发,因此需要某种锁定.我想到的第一件事是在类中有一个静态实例,并在其上获取锁,如下所示:
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
Run Code Online (Sandbox Code Playgroud)
这是否有意义,或者您会使用其他方法吗?
是的,您可以使用静态变量来保护共享资源.
您还可以使用typeof(class)作为锁定内的表达式.但请参阅下面的警告,使用静态变量,它至少在您的班级中受到更多保护.