Lobsters | 原文链接 | 2026-08-27 收录

从 API 到哈希字典树:彻底读懂 Go 的 sync.Map

来源: victoriametrics.com — 2026-08-25

概述

VictoriaMetrics 工程团队从零到一拆解 Go 的 sync.Map。文章先讲普通 map 如何用哈希把查找缩小到很小范围、再用相等比较确认精确匹配,再说明为何普通 map 并发读写会触发「concurrent map read and map write」的致命错误,以及为何无法对 map 条目取地址。随后逐层分析 sync.Map 的 read/dirty 双结构设计,并用哈希字典树(hash trie)的思路解释它如何在读多写少的场景下把锁开销降到最低。

核心要点

金句

由于一个锁保护整个结构体,你可以一起修改多个条目,而其他 goroutine 不会看到半成品状态。
返回 Lobsters 首页