Linux多线程如何避免死锁
2015-08-23 23:09
330 查看
1、线程死锁产生的必要条件:
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
2、如何避免死锁
&bnsp;网上对于如何避免死锁方法很多,我在这里列举两个比较常用的方法。
(1)设置等待超时,当一个线程拿起A资源,等待B资源的时候,如果等待的时间过长则超时,释放A资源,重新等待。
(2)如果线程需要AB两个资源,等待A资源的时候阻塞,然后判断B资源是否可以使用,如果B资源正在被别的线程使用,那么该线程就释放A资源,不阻塞,从新排队等待。
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
2、如何避免死锁
&bnsp;网上对于如何避免死锁方法很多,我在这里列举两个比较常用的方法。
(1)设置等待超时,当一个线程拿起A资源,等待B资源的时候,如果等待的时间过长则超时,释放A资源,重新等待。
(2)如果线程需要AB两个资源,等待A资源的时候阻塞,然后判断B资源是否可以使用,如果B资源正在被别的线程使用,那么该线程就释放A资源,不阻塞,从新排队等待。
相关文章推荐
- Linux用户与用户组
- 关于一些Linux命令的格式及用法(Linux就业班第二次作业)
- linux下结合sqlite3做一个英语查询字典小项目 <1>
- Spark修炼之道(基础篇)——Linux大数据开发基础:第四节:Linux文件系统(二)
- Linux学习日记--基础命令(2)--文件查看,命令历史,命令展开
- Linux命令:head,tail命令使用方法
- CentOS7 安装boost
- 玩转linux第三天之history、alias、unalias 、mkdir、rmdir、tree命令(一)
- Linux串口编程详解
- linux帮助相关命令man、info、help
- Linux麒麟下金仓数据库配置ODBC数据源
- Linux命令:ls命令使用方法
- linux延时函数
- linux修改环境变量
- centos6.5 postgresql-9.4下数据库的迁移
- linux内核编译
- linux驱动程序 硬件访问
- 从虚拟机启动移动硬盘的linux
- linux驱动概述
- Linux下批量转换到utf-8编码的问题