一句话:同一个操作,执行 1 次和重复执行 N 次,最终效果完全一样,不会产生副作用、不会越搞越坏。

数学定义

设函数 ,定义域与陪域相同。若满足:

则称 幂等函数

含义:把函数输出再次代入函数,得到的结果和调用一次完全一样,迭代多次不会改变结果:

不管迭代多少次,结果都等价于只执行一次

计算机中的例子

flock 加锁(函数视角)

为对该 fd 执行 flock(LOCK_EX)

  • 状态空间:{未锁,已排他锁}

满足 ,这个操作是幂等的。

普通 pthread_mutex_lock(非幂等)

pthread_mutex_lock

不满足幂等

rm -f file

,幂等。

POST 创建订单(非幂等)

,不是幂等。