我正在使用一个管理游戏内容的类,我想知道如何在不锁定共享dispose-lock的情况下阻止对dispose方法的调用? worker方法本身是线程安全的,并且可以并行执行,这就是为什么我不想使用dispose-method在触发时尝试获取的共享锁来锁定这些方法。
public void DoSomething()
{
lock (method1Lock) { /* ... */ }
}
public void Dispose()
{
lock (method1Lock)
lock (method2Lock)
lock (methodXLock)
{
}
}
在这种情况下是不合适的,正如我之前提到的那样,方法(在这种情况下为DoSomething)可以并行运行。
答案 0 :(得分:0)
使用ReaderWriterLock
。让Method...
代码采用读取端和Dispose
写入端(不包括)。