线程仅拥有需求边的场景有哪些?死锁避免相关技术问询
关于死锁避免中线程仅含需求边的场景解答
你的初始理解是正确的:线程在尚未发起任何资源请求、也未持有任何资源的阶段(比如还在等待CPU调度的执行前状态),资源分配图里它的所有关联边确实都是需求边。
除此之外,还有一个容易被忽略的实际场景:
- 线程完成一轮资源使用后,释放了所有已分配的资源,且当前没有正在等待的请求边时,会回到仅含需求边的状态。举个例子:一个线程先后请求并使用了资源R1、R2,用完后将它们全部释放,此时它的分配边会从图中移除,也没有未完成的请求边,剩下的就只有预先声明的(或符合放宽条件新增的)需求边。这时系统允许给它新增需求边Ti→Rj,完全符合书中提到的“仅当线程Ti的所有关联边均为需求边时才允许添加”的放宽条件。
这个场景的存在是因为,加尔文提到的放宽条件本质是保证线程在不占用任何资源、也没有待处理请求的“无资源依赖”状态下,动态补充资源需求——这种情况下新增需求边不会破坏死锁避免的安全性,不会引发当前资源分配的环路风险。
内容的提问来源于stack exchange,提问作者Parth G
相关产品推荐
相关产品推荐

