什么是死锁?
在两个或多个并发进程中,如果每个进程持有某种资源而又都等待着别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。
死锁是两个或多个进程被无限期地阻塞、相互等待的一种状态。发生死锁时,涉及的一组进程中,每个进程都占用了一定的资源但又都不能向前推进。在这种情况下,计算机虽然处于开机状态,但这一组进程却未做任何有用的工作。
产生死锁的必要条件
1、互斥条件
多进程共享的资源具有互斥特性,即一次只能由一个进程使用。如果有另一个进程申请该资源,那么申请进程必须等待,直到该资源被释放。
2、不剥夺条件
进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放。
3、占有并等待
进程每次申请它所需要的一部分资源,在等待新资源的同时,进程继续占用已分配到的资源。
4、环路条件
存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中下一个进程所请求。
如何解决死锁
上面已经介绍了死锁的4个必要条件,那么我们只需要破解上面的任意一个或多个条件就可以避免死锁的发生。