加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 线程和简单的死锁治疗

发布时间:2020-12-16 03:13:37 所属栏目:百科 来源:网络整理
导读:在处理线程(特别是C)中使用互斥锁和信号量时,是否有一个简单的经验法则来避免死锁并且干净的同步? 解决方法 一个很好的简单的经验法则是始终从应用程序中的任何地方以一致的可预测顺序获取锁定.例如,如果您的资源具有名称,请始终按字母顺序锁定它们.如果它
在处理线程(特别是C)中使用互斥锁和信号量时,是否有一个简单的经验法则来避免死锁并且干净的同步?

解决方法

一个很好的简单的经验法则是始终从应用程序中的任何地方以一致的可预测顺序获取锁定.例如,如果您的资源具有名称,请始终按字母顺序锁定它们.如果它们有数字ID,请始终从最低到最高锁定.确切的顺序或标准是任意的.关键是要保持一致.这样就不会有僵局.例如.

>线程1锁定资源A
>线程2锁定资源B
>线程1等待获取B上的锁
>线程2等待获取A上的锁
>死锁

如果您遵循上述规则,上述情况永远不会发生.有关更详细的讨论,请参阅Wikipedia entry on the Dining Philosophers problem.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读