死锁

程序无法访问继续运行所需资源的一种状态称为死锁。当正在运行的应用程序遇到死锁时,可能会“挂起”或停止响应。

资源例如已保存或缓存的(数据)在程序中的特定进程访问时可能会被锁定。锁定数据可以防止其他进程过早覆盖数据。如果进程或查询需要访问已锁定的数据,但锁定数据的进程不释放该锁,就可能发生死锁。

例如,以下情况会导致两个进程之间发生死锁:

  • 进程 1 向进程 2 请求资源 B。
  • 进程 2 运行时,资源 B 处于锁定状态。
  • 进程 2 需要从进程 1 获取资源 A 才能完成运行。
  • 进程 1 运行时,资源 A 处于锁定状态。

结果是,进程 1 和进程 2 互相等待对方完成。由于两个进程都必须等另一个进程完成后才能继续运行,因此就形成了死锁。

避免死锁

开发者可以在编程逻辑中避免锁定条件,从而防止死锁。例如,不让两个进程相互依赖,而是编写源代码,使每个线程都在线程所需的资源被另一个线程使用前完成运行。通过确保数据在需要时可以访问,程序员可以防止应用程序挂起或崩溃。

NOTE:数据库上运行两个或更多查询时,也可能发生死锁。事务型数据库会锁定活动记录,防止其他查询访问这些记录。如果进程无法访问已锁定的记录,就可能发生数据库死锁。

更新日期 January 18, 2020 作者 Per C.

quiz测试你的知识

What type of file might a music tracker application output?

A
.TIF
0%
B
.ZIP
0%
C
.XM
0%
D
.PS
0%
Correct! Incorrect!     View the Music Tracker definition.
More Quizzes →

Tech Terms 计算机词典

本页中死锁的定义是由 TechTerms.com 的作者撰写的原创定义。如果您想引用本页或引用此定义,请使用定义正下方的绿色引用栏。

我们的目标是以简单易懂的方式解释计算机术语。我们努力使发布的每个定义都做到准确和简明。如果您对本定义有任何反馈,或想建议一个新的技术术语,请联系我们

Tech Terms 通讯

通过我们的每日或每周通讯提升您的技术知识!立即订阅,即可将新术语和测验发送到您的收件箱。

订阅免费的 TechTerms 通讯

您希望多久收到一封电子邮件?

您可以随时使用每封邮件中的链接取消订阅或更改接收频率。 有疑问?请联系我们

注意:通讯以英文发送。