相关疑难解决方法(0)

你什么时候使用嵌套锁?

我正在阅读Albahari关于线程的优秀电子书,并遇到以下情况他提到"一个线程可以以嵌套(可重入)方式重复锁定同一个对象"

lock (locker)
  lock (locker)
    lock (locker)
    {
       // Do something...
    }
Run Code Online (Sandbox Code Playgroud)

以及

static readonly object _locker = new object();

static void Main()
{
  lock (_locker)
  {
     AnotherMethod();
     // We still have the lock - because locks are reentrant.
  }
}

static void AnotherMethod()
{
  lock (_locker) { Console.WriteLine ("Another method"); }
}
Run Code Online (Sandbox Code Playgroud)

根据解释,任何线程都会阻塞第一个(最外面的)锁,并且只有在外部锁退出后才会解锁.

他说"当一个方法在一个锁中调用另一个方法时,嵌套锁定很有用"

为什么这有用?你什么时候需要这样做,它解决了什么问题?

.net c# multithreading

18
推荐指数
2
解决办法
2047
查看次数

标签 统计

.net ×1

c# ×1

multithreading ×1