Tim*_*sch 6

最简单的一个 - 它是伪代码,但你应该能够将它翻译成几乎任何语言:

线程1:

 acquire_lock(lockA);
   ... do some work ...
 acquire_lock(lockB);
Run Code Online (Sandbox Code Playgroud)

线程2:

acquire_lock(lockB);
  ... do some other work ...
acquire_lock(lockA);
Run Code Online (Sandbox Code Playgroud)

如果线程1正在执行且尚未持有lockB且线程2获取lockB,则两个线程都不能继续经过第二次锁定获取.