如果多线程应用程序中的任何线程在任何给定时间都没有获得超过一个任何类型的锁,并且这些锁总是在某个时刻被释放,那么死锁可能吗?
我想答案是“不”——如果另一个线程想要一个不可用的锁,它不会持有任何锁来阻止任何其他线程运行,并且只会阻塞直到它想要的锁变得可用——真的吗?
如果是这样,死锁在什么时候成为可能?例如,如果除一个之外的所有线程一次都不会获得一个以上的锁,那会造成死锁吗?就个人而言,我看不出如何。
典型的死锁情况是,一个线程拥有锁 A,但需要锁 B,而另一个线程拥有锁 B 并需要锁 A。显然,这对于死锁来说已经足够了,但这是最低限度的必要条件吗?