7

我正在学习 C# 中的多线程,我看到下面的代码

static readonly object _locker = new object();

static void Main()
{
  lock (_locker)
  {
     AnotherMethod();
     // ...some work is going on
  }
}

static void AnotherMethod()
{
  lock (_locker) { Console.WriteLine ("Another method"); }
}

我想知道什么时候需要使用嵌套锁定?在这种情况下,为什么不只使用一把锁呢?

4

2 回答 2

4

我的第一反应是可以直接调用另一个方法,而不是通过 Main 方法,因此您可能需要嵌套锁定。

于 2012-11-22T10:27:35.910 回答
1

允许重入代码。

你的例子不合适。锁用于提供对临界区的受控访问。

如果一个临界区调用另一个临界区,就会发生死锁。为了防止这种情况,允许重入代码。

为什么嵌套锁不会导致死锁?

于 2012-11-22T10:35:39.817 回答