当前位置:  技术问答>linux和unix

死锁的问题 多级锁定问题 循环锁定问题

    来源: 互联网  发布时间:2015-10-25

    本文导语:  比如 有个golean 对象 group 对象 1  group 对象 2 group 对象 3 user 对象1    in group 1 user 对象2   in group 1 user 对象3    in group 1 是一个三级的对象 golean 是全局的 下面有很多 group group 里面有很多user ...

比如 有个golean 对象
group 对象 1  group 对象 2 group 对象 3
user 对象1    in group 1
user 对象2   in group 1
user 对象3    in group 1


是一个三级的对象 golean 是全局的
下面有很多 group
group 里面有很多user

那么gloean 操作 的时候 先锁 golean 
然后进group 再锁 group
进user 再锁定 user

这个顺序没有问题

问题是 如果在user 操作的时候 需要获取 其他group 的资源
或者获取golean 资源的时候
它需要调用golean 的一个方法
那么就是一个反相调用了  
如果user 在本身被调用的时候
golean 已经锁定了 那么这时候会死掉

如何避免这种情况呢?

如果采取回避的方法 也不行啊 因为这是自己和自己竞争啊

我考虑在user 需要需要获取 其他group 的资源
或者获取golean 资源的时候
先不锁定自己 先获取其他的资源 再锁定自己
但是仍不能保证调用user的时候 golean 没有被锁定啊
 
是否整体设计有问题?

或者这种情况下 必须把所有必须的资源 作为参数传给下一级对象
下一级对象完全不需要向上申请资源资源?

|
感觉你整体设计有问题,先有问题然后有模型,不见你的问题只见你的模型,还规定的死死的,不死才怪!

|
你好像对原子锁没有兴趣,Group, Gloeal,都是依赖于user的,那么只要锁定user就可以了,Group, Gloeal对于特定部分加以锁定就可以了是不是?比如它的名字,数量等信息,一访问完了这些属性就可以释放它了。我认为Group, Gloeal 它有很多属性是全局的,你只要锁定它的私有部分就可以了。更具体的锁定交给具体对象去做,比如实际的USER,它会自己管理。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 有n个进程的系统出现死锁,死锁进程个数k应该满足什么条件?
  • 这样会死锁吗?
  • 操作系统的使用的处理死锁的算法
  • 一道操作系统的死锁题目
  • “死锁就是循环等待”这句话不对吗?谢谢!
  • sql server表死锁查不出数据的解决方法
  • 查找sqlserver查询死锁源头的方法 sqlserver死锁监控
  • Java多线程程序死锁检查 JCarder
  • 关于标准输出的缓冲造成的死锁
  • 请问在操作系统的设计中,死锁和饥饿的本质区别是什么?
  • 关于死锁,高手请进!
  • 多进程的并发系统中,肯定不会因竞争( )而产生死锁。
  • C中用system系统调用执行command,执行过程中死锁,如何处理?
  • JBuilder 6 在 winxp 下使用微软拼音输入法,输入中文。出现不正常。jbuilder.死锁
  • SQLServer 中的死锁说明
  • SQL Server 死锁原因分析与解决办法
  • 关于这个死锁的疑惑
  • 增加进程数或减少进程数在任何情况下都不会引起死锁吗?谢谢!!!!
  • SqlServer表死锁的解决方法分享
  • 请教:pthread_join( )在等待一个已经退出的线程时为何会导致死锁?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3