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中根据一个单词快速锁定到日志的操作命令
- Linux多线程中fork与互斥锁过程示例
- Linux 中锁定和解锁用户帐户的三种方法
- linux中各种锁机制的使用与区别详解
- linux中的内核死锁调试
- Linux
- 死锁
相关文章
-
linux环境下如何解决“没有那个文件或目录”
这篇文章主要介绍了linux环境下如何解决“没有那个文件或目录”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教 2023-11-11
-
apache性能测试工具ab使用详解
这篇文章主要介绍了apache性能测试工具ab使用详解,需要的朋友可以参考下 2015-01-01
-
详解Apache SkyWalking 告警配置指南
这篇文章主要介绍了Apache SkyWalking 告警配置指南,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 2021-04-04
-
浅谈Linux的库文件
这篇文章主要介绍了Linux的库文件的相关内容,小编觉得很不错,在这里分享给大家。希望给大家一个参考。 2017-10-10
-
虚拟机ubuntu16.04无法连网的解决方法
这篇文章主要为大家详细介绍了虚拟机ubuntu16.04无法连网的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2019-03-03
-
CentOS NTP服务器安装与配置的过程详解
当服务器多了,时间准确与否,一致与否是个大问题,虽然这个问题总是被忽略,但是统一一致的时间是很有必要的,下面说一下在局域网内配置Linux时间服务器的方法,感兴趣的小伙伴可以自己动手尝试一下 2023-11-11
-
Linux学习之CentOS(二十二)–进入单用户模式下修改Root用户的密码
这篇文章主要介绍了Linux学习之CentOS(二十二)–进入单用户模式下修改Root用户的密码,有需要的可以了解一下。 2016-11-11
-
LINUX启动/重启/停上MYSQL的命令(详解)
下面小编就为大家带来一篇LINUX启动/重启/停上MYSQL的命令(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2016-11-11
-
Apache、Nginx下Font Awesome在 Firefox 中不显示问题解决方法
这篇文章主要介绍了Apache、Nginx下Font Awesome在 Firefox 中不显示问题解决方法,在配置中增加一个响应头即可解决这个问题,需要的朋友可以参考下 2014-07-07
-
Linux 配置WWW服务器全攻略
2009-10-10