P*******b 发帖数: 1001 | 1 Design a class providing lock function which provide lock only if it sees th
ere are no possible deadlocks. | d**e 发帖数: 6098 | 2 应该需要两个matrix
P_Require[i,j] = 1 表示 process i 需要 resource j
P_Holding[i,j] = 1 表示 process i 持有 resource j
如果process m需要update/read/write resource n
那么set p_require[m,n] = 1
然后开始check有没有形成一个环,
如果有,则不lock,并且reset p_require[m,n]=0,没有就可以lock。
大概可能是这样,但我这个只假设一个process只能hold/require一个resource,
如果能hold/require多个resources,那么就用其它的数据结构。
bool flag[] = {false}
bool check_loop (m, n)
flag[m] = true
for all i loop
if !flag[i] && p_holding[i,n] == 1 then
check what process i requires
if nothing was required, continue;
if it requires k, then
if resource k is currently hold by j && flag[j]
return false
else
return check_loop(i, k)
end if
end if
end loop
return true
//check_loop
th
【在 P*******b 的大作中提到】 : Design a class providing lock function which provide lock only if it sees th : ere are no possible deadlocks.
|
|