Oracle Solaris Studio 12.2:线程分析器用户指南

3.1 关于死锁

术语死锁描述的是两个或多个线程由于相互等待而永远被阻塞的情况。导致死锁的原因有很多,例如程序逻辑错误以及不恰当使用同步(如锁和屏障)。本教程重点介绍由于不恰当使用互斥锁而导致的死锁。此类死锁通常发生在多线程应用程序中。

以下三个条件成立时,包含两个或多个线程的进程可能会进入死锁状态:

以下是一个死锁情况的简单示例:

死锁可分为两种类型:潜在死锁或实际死锁,二者的区别如下: