如何避免死锁呢?
产⽣死锁的有四个必要条件:互斥条件、持有并等待条件、不可剥夺条件、环路等待条件。
避免死锁,破坏其中的一个就可以。
消除互斥条件
这个是没法实现,因为很多资源就是只能被一个线程占用,例如锁。
消除请求并持有条件
消除这个条件的办法很简单,就是一个线程一次请求其所需要的所有资源。
消除不可剥夺条件
占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源,这样不可剥夺这个条件就破坏掉了。
消除环路等待条件
可以靠按序申请资源来预防。所谓按序申请,是指资源是有线性顺序的,申请的时候可以先申请资源序号小的,再申请资源序号大的,这样线性化后就不存在环路了。
THE END
暂无评论内容