Linux之死锁与解决方式

 更新时间:2024年02月12日 18:15:39   作者:风吹雨淋  
这篇文章主要介绍了Linux之死锁与解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

死锁

死锁:指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。

死锁现象:

  • 现象1,如果执行流加锁完毕后,不进行解锁则会造成死锁(上篇所述);
  • 现象2,线程A获取了1锁,线程B获取了2锁,同时线程A还想获取2锁,线程B还想获取1锁

现象2模拟:

两个线程都处于阻塞状态

死锁的必要条件

只要产生死锁,这四个条件一定会出现

  • 互斥:一个执行流获取互斥锁后,其它执行流不能再获取该锁
  • 不可剥夺:A执行流拿着锁,未使用完之前不能被强行剥夺
  • 循环等待:多个执行流拿着对方想要的锁,并且各执行流还去请求对方的锁
  • 请求与保持:执行流本身使用着一把锁并不释放,还在请求别的锁

解决方案

使线程的加锁顺序一致

破坏环路等待条件

使用非阻塞锁,一旦线程发现请求的锁被使用,就去释放自己拥有的锁

在加锁前,将临界资源一次性分配给线程A再加锁

try锁:pthread_mutex_try

  • 申请锁失败,错误码会返回
  • 非阻塞锁,申请失败会立即返回

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决Centos7 安装腾达U12无线网卡驱动问题

    解决Centos7 安装腾达U12无线网卡驱动问题

    这篇文章主要介绍了Centos7 安装腾达U12无线网卡驱动,本文给出了解决过程,通过两种方法给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 详细讲解西软FOXHIS增量备份与恢复方法

    详细讲解西软FOXHIS增量备份与恢复方法

    西软在实施阶段时,会设置好几个Linux shell的自动任务,把数据每天全库备份两次,并且并把数据通过ftp拷至备份库,其实这样做存在非常大的安全隐患,数据库服务器如果给KO了,您酒店只有当天的两次备份,数据损失将是12个小时来计算,对酒店经营非常不利
    2017-01-01
  • linux如何关闭numa

    linux如何关闭numa

    这篇文章主要介绍了linux如何关闭numa问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Ubuntu18.04更改apt源为阿里云源的详细过程

    Ubuntu18.04更改apt源为阿里云源的详细过程

    安装Ubuntu 18.04后,使用国外源太慢了,修改为国内源会快很多,下面这篇文章主要给大家介绍了关于Ubuntu18.04更改apt源为阿里云源的相关资料,需要的朋友可以参考下
    2021-12-12
  • Linux进程和计划任务管理方式

    Linux进程和计划任务管理方式

    程序是存储在存储设备上的静态代码,而进程是程序在CPU和内存中动态执行的实体,进程可以有父子关系,查看进程信息的命令包括ps,top,pgrep,jobs,pstree等,用于监控和管理进程状态,ps命令可以显示终端的所有进程
    2024-09-09
  • 详解Linux下调试器GDB的基本使用方法

    详解Linux下调试器GDB的基本使用方法

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须。而且,调试内核和调试应用程序时使用的gdb命令是完全相同的
    2021-06-06
  • ubuntu下安装程序的三种方法总结(推荐)

    ubuntu下安装程序的三种方法总结(推荐)

    下面小编就为大家带来一篇ubuntu下安装程序的三种方法总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 如何在Linux中route add命令添加路由(Linux route)

    如何在Linux中route add命令添加路由(Linux route)

    route add命令是用于管理Linux操作系统网络路由,允许用户添加、删除或修改网络路由表中的条目,在Linux系统上添加静态路由,静态路由是手动配置的路由,它指定了数据包从一个网络到达另一个网络的路径,通过添加静态路由,可实现网络分段、转发和通信等
    2024-06-06
  • Lamp环境下设置绑定apache域名的方法分析

    Lamp环境下设置绑定apache域名的方法分析

    这篇文章主要介绍了Lamp环境下设置绑定apache域名的方法,简单分析了Lamp环境下的Apache域名绑定设置相关属性、功能与操作技巧,需要的朋友可以参考下
    2018-03-03
  • 解决“WARNINGThe remote SSH server rejected X11 forwarding request.“警告(推荐)

    解决“WARNINGThe remote SSH server rejected X11 forwardin

    使用xshell连接服务器时,出现了“WARNING! The remote SSH server rejected X11 forwarding request.”,意思是“远程SSH服务器拒绝X11转发请求”,这篇文章主要介绍了解决“WARNINGThe remote SSH server rejected X11 forwarding request.“警告,需要的朋友可以参考下
    2022-08-08

最新评论