死锁和活锁有什么区别?

有人能举例说明一下(代码)死锁和活锁之间的区别吗

取自http://en.wikipedia.org/wiki/Deadlock:

在并发计算中,死锁是一种状态,其中一组操作的每个成员都在等待其他成员释放锁

活锁类似于死锁,
除了
livelock中涉及的进程
关于一个人的不断变化
另一个,没有进展。活锁是
资源匮乏的特例;
一般定义仅说明
一个特定的过程不是
进步

一个真实的例子
当两个人相遇时就会发生活锁
在狭窄的走廊里,每个人都在尝试
礼貌地移到一边让别人进来
另一个过去了,但是他们结束了
摇摆不定
取得任何进展,因为他们都
以相同的方式在同一位置重复移动
同时

Livelock是一种风险
一些用于检测和检测的算法
从死锁中恢复。如果超过
一个进程采取行动,即死锁
检测算法可以重复使用
触发。这可以通过以下方式避免:
确保只有一个流程(已选择)
随机或按优先级)采取行动

发表评论