首页 > 其他分享 >什么是死锁?死锁的必要条件? 如何避免死锁?

什么是死锁?死锁的必要条件? 如何避免死锁?

时间:2023-10-30 11:58:36浏览次数:24  
标签:锁加 请求 避免 死锁 必要条件 资源

1. 什么是死锁?

多进程在竞争资源时,出现了僵死的状态。

 

2.死锁的必要条件?

  1.互斥条件(一个资源每次只能被一个线(进)程使用)(系统特性不能避免)

  2.不可剥夺条件 (线(进)程已获得的资源, 在未使用完之前,不能强行剥夺) (系统特性不可避免)

  3.循环等待 (若干线(进)程之间形成一种头尾衔接的循环等待资源关系)

  4.请求与保持 (一个线(进)程因请求资源而阻塞时,对已获得的资源保持不放)

 

3.如何避免产生死锁?

  1.打破请求与保持---》给锁加顺序;

  2.打破循环等待----》给锁加时效,在时效内没有达到目的则释放资源。

标签:锁加,请求,避免,死锁,必要条件,资源
From: https://www.cnblogs.com/zuzu/p/17797428.html

相关文章

  • 如何避免JavaScript中的内存泄漏?
    前言过去,我们浏览静态网站时无须过多关注内存管理,因为加载新页面时,之前的页面信息会从内存中删除。然而,随着单页Web应用(SPA)的兴起,应用程序消耗的内存越来越多,这不仅会降低浏览器性能,甚至会导致浏览器卡死。因此,在编码实践中,开发人员需要更加关注与内存相关的内容。因此,小编今天将......
  • 如何避免JavaScript中的内存泄漏?
    前言过去,我们浏览静态网站时无须过多关注内存管理,因为加载新页面时,之前的页面信息会从内存中删除。然而,随着单页Web应用(SPA)的兴起,应用程序消耗的内存越来越多,这不仅会降低浏览器性能,甚至会导致浏览器卡死。因此,在编码实践中,开发人员需要更加关注与内存相关的内容。因此,小编今天......
  • 2023Fal-操作系统-Chapter3-处理机调度与死锁
    本文为笔者的课程学习记录,用于复习与查阅,如有错误,烦请指正。01处理机调度的层次和调度算法的目标1.1何为调度?在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。1.2何为调度算法?处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。......
  • 实现 Angular Lazy loading 时应该避免 Static Imports 的原因
    在Angular应用开发中,Lazyloading(懒加载)是一种常用的优化技术,通过Codesplitting(代码拆分)实现。然而,在实现过程中,开发者往往会遇到一些常见的问题。本文将详细介绍在实现AngularLazyloading时应该避免的错误,并提供实际的示例进行说明。避免Lazy-Loaded代码的静态导入......
  • 使用Optional-避免NPE
    1、常用写法:Optional.ofNullable(messageTemplate).orElseThrow(()->newBusinessException("模板不能为空"));2、介绍Optional.ofNullable()是Java8引入的一个方法,用于创建一个可能为null的Optional对象。Optional是一种容器,可以包含一个非null的值,也可以不包含值(即为......
  • Mysql死亡笔记的死锁记录
    死锁记录线上MySQL死锁了,我赶紧登录线上系统,查看业务日志。能清楚看到是这条insert语句发生了死锁。MySQL如果检测到两个事务发生了死锁,会回滚其中一个事务,让另一个事务执行成功。很明显,我们这条insert语句被回滚了。insertintouser(id,name,age)values(6,'张三',6);但是......
  • 滚珠螺杆应如何存放避免受损
    滚珠螺杆是一种高精度的机械零件,保存或使用不当,会直接损坏,影响生产效率,因此我们在使用时需要注意以下事项:1、避免垂直放置:没有施加预压的螺杆垂直放置时,螺母会因自重而从螺杆轴上脱荐下来,因此使用时要注意避免垂直放置。如果无法避免垂直放置,可以参考垂直使用方法进行操作。2、注意......
  • 巧用模板字符串将未知变量转换为string类型,避免报错
    可理解为将变量向字符串类型转换的语法糖用法我们通常会遇到需要用String.prototype上的方法处理变量,如果该变量为null、undefined、Object则不能直接用字符串方法,也不易于统一处理为字符串;使用模板字符串包裹该变量,则可以简单粗暴的将任意类型转换为字符串类型,避免报错。案例:......
  • 死锁
    lock函数解决死锁的根本原因就是他会对互斥锁参数进行合适的排序,避免死锁发生,另外如果lock函数无法获取所有的互斥锁时它会堵塞该进程,直到拿到所有互斥锁。lock_guard函数模板如果仅有互斥锁一个参数的话,执行时它是会尝试拿到锁然后去构造函数,而如果有了adopt_lock那么它默认我以......
  • 怎样预防死锁
    死锁是多线程编程中的一个常见问题,它发生在多个线程互相等待对方释放资源时,导致所有线程都无法继续执行的情况。预防死锁的方法通常包括以下几种策略:加锁顺序:确保所有线程以相同的顺序获取锁。如果所有线程都按照相同的顺序请求锁,那么死锁的可能性将大大降低。这个策略......