Как реализовать concurrent map?

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

Три способа. map + sync.RWMutex: RLock для чтения, Lock для записи — просто и предсказуемо. sync.Map: оптимизирован для read-heavy или disjoint keys, но API менее удобный (Load/Store вместо []). Sharded map: несколько map с отдельными mutex, ключ определяет shard (hash % N). Шардинг уменьшает contention — горутины блокируют только свой shard. Для большинства случаев хватает RWMutex. sync.Map — если профилировщик показал contention. Sharded — для экстрима.

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

Что такое string interning?