什么是死锁
如果一组进程(或者线程)中的所有进程(或者线程)都在等待该组中其他进程(或者线程)才能引发的事件,那么这组进程(或者线程)就是死锁的
死锁出现的情况举例
(1)线程自锁,自己将自己锁住
当进程(线程)第一次访问一个资源时,对该资源进行加锁;如果该进程(线程)又对该资源试图使用而进行加锁时,由于锁之前已被自己加上,便会等待锁的释放。这就永远处于挂起状态了,便产生了死锁。
(2)多个线程抢占资源
例如当线程A获得资源1时,线程B获得资源2时;然后此时,线程A又对2资源进行请求,线程B又对1进行请求,这样线程A,B都将等待另一个线程释放资源,于是线程A,B又永远处于挂起状态了,这又是死锁产生的一种情形。
系统中资源的分类
<1>按照重用和消耗类型
(1)可重用资源
特点:
可以让用户多次使用的资源
性质:
1、每一个资源只可以让一个进程(或者线程)进行占用,不可以让多个进程(或者线程)共享
2、使用方法:请求资源---使用资源---释放资源
3、系统中每一个可重用资源中的数目是相对固定的