什么是死锁
什么是死锁
我将从3个方面回答这个问题:1、死锁的定义。2、形成死锁的条件。3、如何解决死锁问题
1、死锁的定义
一组互相竞争资源的线程,因互相等待,再无外力的作用下,形成的“永久”阻塞的现象
2、形成死锁的条件
互斥:一个资源同时只允许一个线程占用
非剥夺:所竞争的资源,在当前线程只有的情况下,不可被其他线程强行剥夺
请求和保持条件:当前线程已经获得了资源x,又去请求资源y,又不释放资源x
循环等待:线程t1等待线程t2占用的资源,线程t2等待线程t1占用的资源
3、如何解决死锁问题
非剥夺:一次性申请线程所需要的所有资源
请求和保持条件:当前线程已经获得了资源x,又去请求资源y。如果申请不到y资源就先释放资源x
循环等待:按照顺序申请资源,将资源排序顺序进行申请