|
不知这样行不?
首先将函数调用理解为“请求”。
A.callB和B.callA很可能同时请求对方的test函数,而此时各自的test函数已经上锁。这样的话,A.callB和B.callA就会出现“请求环"。
在保护原有请求需求的条件下,解决方法就是要去除任何时刻的请求环,只要将相互的请求安排在不同时间就可以。
可以增加一个控制变量(临界变量)来控制请求的顺序。比如:增加一个A和B都可以访问的临界变量c,
1,c初始为false
2,仅当c==false时,才可以进入B.callA的A.test 或进入A.callB的B.test,
3,一旦进入B.callA的A.test 或进入A.callB的B.test,就令c=true,离开时令c=false
这样就可以避免B.callA请求A.test时A.callB也在请求B.test所造成的死锁
[ 本帖最后由 yonhe 于 2007-4-30 16:37 编辑 ] |
|