代码之家  ›  专栏  ›  技术社区  ›  Viele

当检测到死锁时会发生什么

  •  1
  • Viele  · 技术社区  · 14 年前

    假设我想用锁系统实现一个数据库,我使用锁避免,并试图在获取它之前避免潜在的死锁。

    当会话/事务已经成功地获取了某个资源A,而现在它试图获取资源B上的锁时,当检测到死锁时。

    还是有其他更标准的方法来处理这种情况?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Daniel    10 年前

    解决冲突(死锁)事务的通常方法是回滚其中一个事务,然后重试(在另一个事务释放了两个锁之后)。

    Software Transactional Memory

        2
  •  1
  •   Lester    14 年前

    SQL Server处理死锁的方式与您描述的类似—它将选择两个会话中的一个作为死锁受害者,并终止/使会话无效。

        3
  •  0
  •   mcandre    14 年前

    如果检测到死锁,则引发一个错误以指示程序员应该更改其模型。