![](//upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Disambig_gray.svg/25px-Disambig_gray.svg.png)
“
死结”重定向至此。关于有关绳结上的死结,请见“
单结”。
死锁(英语:deadlock),又译为死结,计算机科学名词。当两个以上的运算单元,双方都在等待对方停止执行,以取得系统资源,但是没有一方提前退出时,就称为死结[1]。在多工作业系统中,作业系统为了协调不同线程,能否取得系统资源时,为了让系统正常运作,必须要解决这个问题。另一种相似的情况称为“活锁”。
两个行程以相反的顺序竞争两个资源。- 经过一个行程。
- 后面的行程需要等待。
- 当第一个行程锁定第一个资源而第二个行程锁定第二个资源时,就会发生死锁。
- 可以透过取消并重新启动第一个行程来解决死锁
| 本条目存在以下问题,请协助 改善本条目或在 讨论页针对议题发表看法。
| 此条目需要精通或熟悉相关主题的编者参与及协助编辑。 (2015年3月22日) |
| 此条目 需要补充更多来源。 (2021年4月12日) |
|
P1、P2两个process都需要资源才能继续执行。P1拥有资源R2、还需要额外资源R1才能执行;P2拥有资源R1、还需要额外资源R2才能执行,两边都在互相等待而没有任何一个可执行。
四个行程(蓝线)竞争一种资源(灰色圆圈),遵循先右后左的策略。当所有行程同时锁定资源(黑线)时,就会发生死锁。可以透过打破对称性来解决死锁。