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

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

总结

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

相关文章

  • Linux alias的三种使用场景方式

    Linux alias的三种使用场景方式

    文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效,系统级别别名对所有用户生效,文章还提供了创建、修改、删除别名的方法
    2025-01-01
  • linux mpstat命令使用详解

    linux mpstat命令使用详解

    这篇文章主要介绍了linux mpstat命令使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • VirtualBox 未指定要bridged的网络界面的解决办法

    VirtualBox 未指定要bridged的网络界面的解决办法

    这篇文章主要介绍了VirtualBox 未指定要bridged的网络界面的解决办法的相关资料,希望通过本文能帮助到大家,让大家解决遇到这样的问题,需要的朋友可以参考下
    2017-10-10
  • Linux修改主机名命令详解

    Linux修改主机名命令详解

    在本篇文章里小编给大家整理的关于Linux修改主机名命令的知识点详解,有兴趣的朋友可以参考学习下。
    2020-02-02
  • apache 80端口被iis或其他服务占用怎么办

    apache 80端口被iis或其他服务占用怎么办

    80端口被占用导致apache无法正常运行,如果80端口不是iis占用,我们可以参考下面方法来查找80端口被哪个服务占用,具体操作如下
    2013-05-05
  • Ubuntu无网络连接及标识的解决方法

    Ubuntu无网络连接及标识的解决方法

    本文已解决 Ubuntu无网络连接/无网络标识解决方法的相关问题,并总结提出了几种可用解决方案,如果有遇到相同问题的朋友可以参考阅读下本文,对解决问题有一定的帮助
    2024-09-09
  • linux下配置yum源方法详解

    linux下配置yum源方法详解

    本篇文章主要介绍了linux下配置yum源方法详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • Linux平台Segmentation fault(段错误)调试过程

    Linux平台Segmentation fault(段错误)调试过程

    这篇文章主要介绍了Linux平台Segmentation fault(段错误)调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Linux使用top命令过滤排序的方法详解

    Linux使用top命令过滤排序的方法详解

    top是CentOS 7中最核心的系统监控工具,能实时显示进程的CPU、内存等资源占用,下面从基础界面、排序、过滤三个维度详解,重点聚焦你关注的排序和过滤功能,需要的朋友可以参考下
    2026-02-02
  • CentOS---常用网络配置详解

    CentOS---常用网络配置详解

    本篇文章主要介绍了CentOS网络配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12

最新评论