- 互斥条件:资源在任何时候只占用一个线程。
- 请求和维护条件:当一个线程因请求资源而被阻塞时,不要放置已获得的资源。
- 不剥夺条件: 线程获得的资源在使用前不能被其他线程强行剥夺,只有在使用后才能释放资源。
- 循环等待条件: 在几个线程之间形成一种循环等待资源关系,头尾相连。
如何防止死锁?1.资源互斥性(资源的属性不同时属于/分配给多个过程)->2.持有和等待(过程分配(持有)资源,等待(申请)其他资源)->3不能剥夺(不能强制收回已分配的资源)->4.环形等待(过程之间的资源等待形成相互依赖,相互不礼貌)再流行起来,进一步解释这种逐步升级的情况。1->2->3->四是资源分配逐步递进、加强、升级的过程:资源是每次互斥的过程(1.互斥);资源分配给我,我必须申请其他资源(2.持有和等待)。;你拿不到我占用的资源,我拿不到你占用的资源(3.不能剥夺);我申请的资源在你那里,你申请的资源在我这里(4.循环等待),最终形成了相互占有、相互等待的僵局~
破坏死锁的必要条件可以是:
破坏请求和维护条件:一次性申请所有资源。破坏不剥夺条件:当占用部分资源的线程进一步申请其他资源时,如果不能申请,可以主动释放其所占用的资源。破坏性循环等待条件:依靠有序的应用资源进行预防。按一定顺序申请资源,释放资源反向释放。破坏循环等待条件.