有人可以用示例(代码)解释死锁 和 活锁 有什么区别吗?
取自http://en.wikipedia.org/wiki/Deadlock:
在并发计算中, 死锁 是一组动作的每个成员都在等待其他成员释放锁的状态 活锁 类似于死锁,除了活锁中涉及的进程的状态不断地相互改变,没有进展。活锁是资源匮乏的一种特殊情况;一般定义仅说明特定进程没有进展。 一个真实的活锁示例发生在两个人在狭窄的走廊里相遇,每个人都试图通过移动让对方通过,但他们最终左右摇摆而没有任何进展,因为他们都反复移动在同一时间以同样的方式。 对于一些检测死锁并从死锁中恢复的算法来说,活锁是一种风险。如果有多个进程采取行动,死锁检测算法会被重复触发。这可以通过确保只有一个进程(随机或按优先级选择)采取行动来避免。
在并发计算中, 死锁 是一组动作的每个成员都在等待其他成员释放锁的状态
活锁 类似于死锁,除了活锁中涉及的进程的状态不断地相互改变,没有进展。活锁是资源匮乏的一种特殊情况;一般定义仅说明特定进程没有进展。
一个真实的活锁示例发生在两个人在狭窄的走廊里相遇,每个人都试图通过移动让对方通过,但他们最终左右摇摆而没有任何进展,因为他们都反复移动在同一时间以同样的方式。
对于一些检测死锁并从死锁中恢复的算法来说,活锁是一种风险。如果有多个进程采取行动,死锁检测算法会被重复触发。这可以通过确保只有一个进程(随机或按优先级选择)采取行动来避免。