您的位置:首页 > 运维架构 > Linux

线程同步之死锁的原因和解决方法

2017-10-07 15:33 204 查看
造成死锁的原因:

1、  自己锁自己。线程获得锁A,没有给自己解锁又去拿锁A,一直阻塞造成死锁。

2、  两个共享数据,两把锁AB。线程一获得锁 A后又去获取锁B,但是线程二获得B锁又去获取A锁,两者都拿不到对方的锁,两者造成死锁。

解决方法:

1让线程按顺序访问共享资源。

2在访问另外一个共享资源之前先解锁已经拥有的锁

3在访问之前使用trylock函数尝试加锁,如果失败就直接返回
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 线程 多线程