当两个线程互相持有互斥锁,并且都在等待对方释放锁,在没有外力的作用下,这些线程会一直相互等待,无法继续运行,这种情况就是发生死锁。
死锁只有同时满足以下四个条件才会发生:
- 互斥条件:多个线程不能共享一个资源。
- 持有并等待条件:线程 1 持有资源 A,要申请资源 B,然而资源 B 被线程 2 持有,那么线程 1 就会等待。
- 不可剥夺条件:当线程已经持有了资源 ,在自己使用完之前不能被其他线程获取。
- 环路等待条件:在死锁发生的时候,两个线程获取资源的顺序构成了环形链。
当两个线程互相持有互斥锁,并且都在等待对方释放锁,在没有外力的作用下,这些线程会一直相互等待,无法继续运行,这种情况就是发生死锁。
死锁只有同时满足以下四个条件才会发生:
- 互斥条件:多个线程不能共享一个资源。
- 持有并等待条件:线程 1 持有资源 A,要申请资源 B,然而资源 B 被线程 2 持有,那么线程 1 就会等待。
- 不可剥夺条件:当线程已经持有了资源 ,在自己使用完之前不能被其他线程获取。
- 环路等待条件:在死锁发生的时候,两个线程获取资源的顺序构成了环形链。