Как работает sync.Map внутри?

Middle
199 просмотров
AFK Offer AI

sync.Map оптимизирован для двух сценариев: ключ записывается один раз и читается много раз, или горутины работают с непересекающимися ключами. Внутри — два map: read (atomic, без блокировки) и dirty (с mutex). Чтение — сначала из read (быстро), если нет — из dirty (с блокировкой). Запись — в dirty. Когда dirty накопил достаточно промахов — promoted в read. Для случая "все горутины пишут в одни ключи" — обычный map + RWMutex быстрее.

Следующий вопрос

Что такое CI cache?