SIP Servlet容器中死锁避免机制解析
1. 现有死锁避免方法的局限性
在SIP Servlet容器中,为避免CMG死锁,程序员可使用目标机制将消息 m1 和 m2 关联到同一个应用会话。例如,假设目标机制将这两个消息都与 cmg1 关联,线程 t1 和 t2 会先请求相同的应用会话,其中一个线程(如 t2 )会阻塞,让另一个线程(如 t1 )获取其他应用会话并继续执行。
然而,这种目标机制存在明显不足:
- 缺乏优雅性和灵活性 :目标方法为计算返回的应用会话标识符,可能需要查询一个或多个应用会话,且这些查询需保证线程安全,这意味着可能要锁定一个或多个应用会话来计算应锁定的其他会话。
- 引入不必要的同步需求 :根据SIP协议,与请求关联的应用会话也必须与该请求的所有响应关联。以两个请求消息 m1 和 m2 为例,正常情况下它们分别与应用会话 a1 和 a2 关联。为避免死锁,若使用目标机制将它们都与 a1 关联,那么对应的响应消息 m1′ 和 m2′ 也会与 a1 关联,即便 m2′ 可能仅需修改应用会话 a2
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



