绪论
从OverStackFlow搬运的一个回答,原回答请见这里第一个回答。
正文
在并行计算中,死锁是指这样的一种状态:在一个组中的每一个操作都在等待某一个其他成员去释放掉那个成员的锁。活锁与死锁相似,除了与活锁相关的进程总是会随着一个其他的进程而改变,但是进程不会运行。活锁是一种资源饥饿的特殊情况。广义的定义只说明了一个特定的进程没有运行。
活锁在一个现实世界中的一个例子:当两个人在一个狭窄的走廊遇见了,而且每个人都尝试通过让另外一个人先通过来表现得礼貌。但是因为他们总是重复地以相同的方式移动,所以他们最终只是从一边走到另外一边。
活锁对于一些检测死锁并从中恢复的算法来说是一种风险。如果多个进程运行,那么死锁检测算法会被反复地激发。通过确保只有一个进程(随机选取或通过优先级)运行,这一点可以被避免。