相关疑难解决方法(0)

使用lock语句在C#中进行递归/嵌套锁定

可能重复:
C#中的重入锁定

我在这里看过StackOverflow和MSDN,并且无法相信我在互联网上找不到这个问题.

假设我有一个私有成员的课程,我想在几个公共方法中访问.这些公共方法将由​​不同的线程调用,因此需要同步.

public class MyClass
{
    private Object SomeSharedData = new Object();

    public void MethodA()
    {
        lock( SomeSharedData) {
            // do something
            MethodB();
        }
    }

    public void MethodB()
    {
        lock( SomeSharedData) {
            // do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,MethodA和MethodB可以由此类的用户调用,但MethodA也调用MethodB,这会导致嵌套锁定条件.

这保证是安全的吗?换句话说,.NET是通过引用计数锁来处理这个,所以当我弹出这些方法时,锁会减少吗?或者.NET在幕后执行一些魔术,它只是忽略了源自同一线程的对象上的所有后续锁定?

.net c# synchronization locking

16
推荐指数
1
解决办法
7490
查看次数

标签 统计

.net ×1

c# ×1

locking ×1

synchronization ×1