zoukankan      html  css  js  c++  java
  • 多线程008如何预防死锁

    死锁发生的四个必要条件:

    1.互斥条件,同一时间只能有一个线程获取资源。

    2.不可剥夺条件,一个线程已经占有的资源,在释放之前不会被其他线程抢占。

    3.请求和保持条件,线程等待过程中不会释放已占有的资源。

    4.循环等待条件,多个线程互相等待对方释放资源。

    死锁的预防,就是要打破这四个必要条件:

    1.互斥条件无法改变。

    2.破坏不可剥夺条件,一个线程不能获取所需的全部资源处于等待的时候,将他占有的资源隐式的释放重新加入道系统资源列表中,可以被其他线程使用。

    等待的线程只有重新获得自己原有的资源以及新申请的资源才可以重新启动。

    3.破坏请求与保持条件,每个线程在开始执行时就申请他所需要的全部资源;每个线程在申请锁需要的资源时他本身不占用系统资源。

    4.破坏循环等待条件,将系统中所有资源按顺序编号,将紧缺的,稀少的采用较大编号,在申请资源时必须按照编号顺序进行,一个线程只有先获得较小的编号的资源,才能申请较大编号的资源。

  • 相关阅读:
    zookeeper.Net
    转码和解码
    Node.js开发Web后台服务
    SQL Server 2012 读写分离设置
    使用C# 和Consul进行分布式系统协调
    http2
    .net core 2.1.3可能引发Could not load file or assembly XXXXX的错误
    jquery on函数和prop与attr区别
    html页面中完成查找功能
    C#匿名参数(转载too)
  • 原文地址:https://www.cnblogs.com/asenyang/p/15570445.html
Copyright © 2011-2022 走看看