【发布时间】:2013-02-24 21:50:01
【问题描述】:
如果多线程应用程序中的任何线程在任何给定时间都不会获得超过一个任何类型的锁,并且此类锁总是在某个时间点被释放,那么死锁是否可能?
我想答案是“否”——如果另一个线程想要一个不可用的锁,它不会持有任何阻止任何其他线程运行的锁,并且只会阻塞直到它想要的锁变得可用——真的吗?
如果是这样,死锁在什么时候成为可能?例如,如果除一个之外的所有线程一次都不会获得一个以上的锁,那会造成死锁吗?我个人看不出怎么做。
典型的死锁情况是一个线程有锁A,但需要锁B,而另一个线程有锁B,需要锁A。显然,这对于死锁来说已经足够了,但这是最低限度的必要条件吗?
【问题讨论】:
-
“任何种类”是什么意思?您指的是不止一种类型的锁吗?
-
可能是 - 互斥体、信号量等 - 线程阻塞控制对共享资源的访问的同步元素的任何基础。
标签: multithreading