具有N个线程的系统的死锁

时间:2014-12-19 21:28:11

标签: multithreading thread-safety deadlock locks

假设我有一个包含N个进程的系统。每个过程需要最大K个资源(K

2 个答案:

答案 0 :(得分:3)

最大N为1.在同一进程中有2个或多个线程与相同内存交互,完全可能出现死锁。情形:

A asks for and receives lock 1
B asks for and receives lock 2
A asks for lock 2 and pauses
B asks for lock 1 and pauses
A and B now deadlock

锁定的顺序必须与>一致。 1锁定以完全防止死锁。

答案 1 :(得分:0)

'为防止冲突,进程需要在访问之前锁定每个资源' - 这会产生误导/错误。它需要在一次“锁定”操作中锁定所需的所有资源,或者在整个集合可用之前保持阻塞状态。线程很可能将资源需求集提交给资源管理结构/实例,并保持阻塞状态,直到集合中的所有资源都可用,而不会在等待时阻止访问任何资源。

对每个资源应用锁定并让线程尝试串行锁定资源是一种天真的解决方案,对于任何N> 1都可能失败,正如Haney所解释的那样。