# 活锁

> 活锁（英语：Livelock）指线程或进程并未被阻塞，而是不断重试、不断改变自身状态，却始终无法向前推进的状态。它与死锁的关键区别在于：死锁是各方都在等待，活锁是各方都在活动却白费力气。典型如两人在走廊相遇，彼此不断避让却始终同向移动。解决活锁通常需要引入随机等待或确立主从关系。

- ID: m05808
- 分类: technical
- 领域: 计算机科学

## 定义

两个进程为了避让对方，不断地改变自己的状态，结果导致谁也无法前进。就像两个人在走廊相遇，你往左躲，我也往左；你往右，我也往右，一直在动，但一直卡住。脚手架作用： 过度礼貌的死循环。在协作中，如果双方都过度客气、过度适应对方，反而会导致效率为零。解决活锁需要引入随机性（等一会再动）或确立主从关系（一人不动，一人动）。

## 机制

两个或多个进程/线程为避免冲突不断改变状态“礼让”对方，结果谁都无法推进；与死锁不同，资源在忙碌而非僵死，系统空转。

## 练习

检测持续状态切换却无进展；引入随机退避或固定优先级打破对称；用超时与重试上限避免无限礼让。

## 脚手架用法

过度礼貌的死循环。在协作中，如果双方都过度客气、过度适应对方，反而会导致效率为零。解决活锁需要引入随机性（等一会再动）或确立主从关系（一人不动，一人动）。

[阅读网页](https://thinkingmodels.site/entries/detail/m05808)
