-1

有人可以给我看一个简单的死锁吗? C++ 中的两个线程示例

4

1 回答 1

6

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

线程 1:

 acquire_lock(lockA);
   ... do some work ...
 acquire_lock(lockB);

线程 2:

acquire_lock(lockB);
  ... do some other work ...
acquire_lock(lockA);

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

于 2013-06-22T15:49:49.697 回答