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下pip的安装步骤及使用详解

    linux下pip的安装步骤及使用详解

    pip类似RedHat里面的yum,安装软件非常方便,下面这篇文章主要给大家介绍了关于在linux系统下pip的安装步骤及使用的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • 在Linux中打开、提取和创建rar文件的操作方法

    在Linux中打开、提取和创建rar文件的操作方法

    RAR 是一种流行的文件压缩格式,以其高效的压缩算法和将大文件压缩为较小档案的能力而闻名,虽然 Linux 本身支持 ZIP 和 TAR 等常见档案格式,但处理 RAR 文件需要额外的工具,在这篇博文中,我们将探讨如何在 Linux 中打开、提取和创建 RAR 文件,需要的朋友可以参考下
    2024-04-04
  • Linux 查看内存使用情况的几种方法汇总

    Linux 查看内存使用情况的几种方法汇总

    Linux 查看内存使用情况的几种方法包括使用 free 命令、top 命令、htop 命令、vmstat 命令和/proc/meminfo 文件。这些方法可以帮助用户了解系统内存的使用情况,包括总内存、已用内存、空闲内存、缓存和交换分区等信息。
    2023-04-04
  • centos7中安装Android SDK的方法步骤

    centos7中安装Android SDK的方法步骤

    本篇文章主要介绍了centos7中安装Android SDK的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Linux下gdb调试打印数组元素以及说明

    Linux下gdb调试打印数组元素以及说明

    这篇文章主要介绍了Linux下gdb调试打印数组元素以及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • CentOS7搭建gerrit 代码审查服务方法

    CentOS7搭建gerrit 代码审查服务方法

    下面小编就为大家分享一篇CentOS7搭建gerrit 代码审查服务方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 如何使用shell在多服务器上批量操作

    如何使用shell在多服务器上批量操作

    日常工作中,我们常需要同时在多台服务器上执行同样的命令,如对比日志、检查服务等。这就需要我们有服务器批量操作的能力,我们可以借用 ssh公钥登陆的能力,方便地实现在多个服务器上批量执行命令。
    2021-05-05
  • 新版ubuntu20.04 使用root用户登录系统的详细教程

    新版ubuntu20.04 使用root用户登录系统的详细教程

    这篇文章主要介绍了新版ubuntu20.04 使用root用户登录系统的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • linux下使用U盘拷文件方式

    linux下使用U盘拷文件方式

    这篇文章主要介绍了linux下使用U盘拷文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 详解阿里云CentOS Linux服务器上用postfix搭建邮件服务器

    详解阿里云CentOS Linux服务器上用postfix搭建邮件服务器

    本篇文章主要介绍了详解阿里云CentOS Linux服务器上用postfix搭建邮件服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12

最新评论