请解释 Go 中 Singleflight 的实现原理,并说明它在并发安全、结果污染以及 call 失败时如何处理等待请求。
考察说明
考察对 Singleflight 机制的理解、并发正确性及异常处理的边界
回答思路
- 说明用 map 管理进行中的调用并通过互斥锁保护
- 解释并发请求共享一次调用的流程与并发安全方式
- 指出结果污染来源(返回权被任一等待者释放)及解决手段(共享返回权、广播释放或超时控制)
- 说明 leader call 失败时如何唤醒所有等待者并传播错误,避免无限等待
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。