如果在多线程应用程序没有线程在任何时候获得过任何形式的不止一个锁,这种锁总是在某个时候释放出来,是死锁可能吗?必要对死锁的充分条件发生
我想答案是“否” - 如果另一个线程想要一个不可用的锁,它将不会阻止任何其他线程运行的锁,而只会阻塞,直到它想要的锁变为可用 - true ?
如果是这样的话,在什么时候做死锁成为可能?例如,如果除一个线程之外的所有线程永远不会获得多个锁,那么是否会造成死锁?我个人看不出如何。
经典的死锁案例是一个线程拥有锁定A的情况,但需要锁定B,而另一个线程拥有锁定B并且需要锁定A.显然,这对于死锁是足够的,但这是最低限度的必要吗?
你说的意思是“任何一种形式?”您所指的锁是否有多种类型? – 2013-02-24 21:51:27
可能是 - 互斥量,信号量等 - 线程阻塞控制对共享资源的访问的同步元素的任何基础。 – omatai 2013-02-24 21:58:35