- UID
- 7350413
- 阅读权限
- 20
- 帖子
- 3
- 精华贴数
- 0
- 技术排名
- 181181
- 技术积分
- 6
- 社区排名
- 978405
- 社区积分
- 0
- 注册时间
- 2006-5-19
- 精华贴数
- 0
- 技术积分
- 6
- 社区积分
- 0
- 注册时间
- 2006-5-19
- 论坛徽章:
- 0
|
死锁的理解
在计算机多道程序系统中,一组进程中的每一个进程均无限期的等待另一组进程所占有的且不会释放的资源,这种现象称为死锁
例如,
进程1,2分别完全占有两种系统资源A和B,它们的进程操作分别如下(从左到右):
1:获得A资源,获得B资源,释放A资源,释放B资源;
2:获得B资源,获得A资源,释放B资源,释放A资源;
从1来看,它要获得B资源才会释放A资源,而获得A资源正是进程2释放B资源的条件,所以两个进程互相等待,进入死锁.
看似枯燥抽象的概念其实是可以从现实生活中体会到的,厕所便是获得这种体会的宝地!以下便是在下今天的新收获:
窗外风和日丽,终于告别了多日的阴雨天气,所以做什么时候都非常爽,包括如厕.(先说明一下:经常在上课时间,我会在宿舍,为了保证宿舍安全,上厕所的时候我都会关好门窗,看得出我是个爱宿舍的人~0~)新陈代谢活动正进行着如火如荼的时候,突然舍长敲门了(这家伙不喜欢带钥匙),被打扰了,连我的肠胃都叫不爽~~~ 为了不让舍长露宿街头,只能草草了之.这时,惨痛的一幕发生了---手纸不多了...除了惊悸,在我脑海中还闪过了一个对计算机概念的理解:
假如这个时候手纸真的不够,我需要别人给我增援,我就会一直等.同时,在外面的人,需要我去开门,他才能进来,而事实上,我是不可能去开门的,因为我在等着他来"增援".此时,都同时在等待对方的"增援",而这种"增援"都是不可能发生的,两个人处于僵持状态,"死锁"便发生了!
(注:我顺利完成如厕的动作相当于进程1,舍长进入宿舍相当于进程2,手纸相当于资源A,门打开了相当于资源B)
以上便是我对于"线程死锁"新的理解方式,你看明白了吗?
PS:还好那天手纸够了,我找了藏匿的顽固分子,"死锁"最终没发生... |
|