美文网首页
什么是死锁?如何避免死锁?

什么是死锁?如何避免死锁?

作者: Kyriez7 | 来源:发表于2022-09-29 10:31 被阅读0次

    概念
    线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。

    我和同学都打扫卫生,我拿着扫帚等他的簸箕,他拿着簸箕等我的扫帚

    产生条件
    互斥条件:同一时刻一线程只能占用一个资源。

    同一时刻,我拿着扫帚,他拿着簸箕。

    请求与保持:一个线程因请求资源而阻塞时,对已获得的资源保持不放。

    我在等他的簸箕,但我不会让出我的扫帚

    不可剥夺:已获得的资源在为使用完时,其他线程不能强行剥夺。

    我拿着扫帚,但是我不能去强抢他拿的簸箕

    循环等待

    我拿着扫帚等他的簸箕,他拿着簸箕等我的扫帚,形成闭环

    如何避免
    打破产生条件即可

    破坏 互斥条件:无法被破坏,因为锁就是通过互斥来解决线程安全问题
    破坏 请求与保持条件:一次申请所有需要的资源
    破坏 不可剥夺条件:如果线程已占用部分资源,且他还要申请其他资源,如果申请不到,就主动释放它自己占有的资源
    破坏 循环等待条件:按照顺序申请资源,释放资源则逆序

    相关文章

      网友评论

          本文标题:什么是死锁?如何避免死锁?

          本文链接:https://www.haomeiwen.com/subject/bmzhartx.html