linux环境编程-死锁
死锁【线程或者进程由于对锁的竞争让程序处于阻塞状态】
- 1.线程【或进程】试图对同一个锁,试图加锁两次
- 2.线程1拥有 A锁,请求获得B锁, 线程2拥有B锁,试图获取A锁
死锁如图
1.线程【或进程】试图对同一个锁,试图加锁两次
2.线程1拥有 A锁,请求获得B锁, 线程2拥有B锁,试图获取A锁
避免死锁的方法:
死锁1:判断lock返回值,如果成功访问完资源后立即解锁。
死锁2:线程1调用trylock函数,尝试着获取锁2,如果失败,说明锁2在别的线程手中,此时,为了避免死锁,就把自己已经拥有的锁1,主动释放掉,成全线程2(退一步海阔天空)