死锁【线程或者进程由于对锁的竞争让程序处于阻塞状态】

  • 1.线程【或进程】试图对同一个锁,试图加锁两次
  • 2.线程1拥有 A锁,请求获得B锁, 线程2拥有B锁,试图获取A锁

 

死锁如图

1.线程【或进程】试图对同一个锁,试图加锁两次

linux环境编程-死锁

 

2.线程1拥有 A锁,请求获得B锁, 线程2拥有B锁,试图获取A锁

linux环境编程-死锁

 

 

避免死锁的方法:

死锁1:判断lock返回值,如果成功访问完资源后立即解锁。

死锁2:线程1调用trylock函数,尝试着获取锁2,如果失败,说明锁2在别的线程手中,此时,为了避免死锁,就把自己已经拥有的锁1,主动释放掉,成全线程2(退一步海阔天空)

 

 

 

相关文章:

  • 2021-06-02
  • 2021-07-15
  • 2021-08-10
  • 2021-05-28
  • 2021-07-31
  • 2022-01-06
  • 2021-05-16
  • 2022-12-23
猜你喜欢
  • 2021-11-25
  • 2021-09-24
  • 2021-12-25
  • 2022-12-23
  • 2022-01-22
  • 2021-10-15
  • 2022-12-23
相关资源
相似解决方案