死锁

如果使用正确和小心,锁可以防止竞争
条件。
但另一个问题又浮现出来。
因为使用锁需要线程等待(获取块)
当另一个线程持有锁时),有可能进入
两个线程互相等待的情况
因此,双方都无法取得进展。
死锁描述了两个或多个线程被阻塞的情况
永远,等待着彼此。
并发模块时发生死锁
都在等待对方去做什么
一些东西。
死锁可能涉及两个以上
模块:信号死锁的特点是
依赖的循环,例如a在等待
B在等待C
他们谁也做不到
的进步。
死锁:
线程A获得harry上的锁(因为friend方法是
同步)。
-线程B获得了斯内普的锁(原因相同)。
-他们都独立更新各自的代表,然后试着打电话
friend()在另一个对象上——这需要他们获得锁
在另一个对象上。
A抱着哈利等着斯内普,B也抱着
斯内普在等哈利。
-两个线程都被困在friend()中,所以没有一个线程会成功
退出同步区域并释放对另一个区域的锁。
-这是经典的致命拥抱。程序简单地停止了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值