Как сделать потокобезопасную map?

Middle
1.5k просмотров
AFK Offer AI

Три варианта. Первый — обернуть обычную map в структуру с sync.RWMutex: RLock для чтения, Lock для записи. Второй — sync.Map из стандартной библиотеки, но она оптимальна только для специфичных паттернов (read-heavy, ключи стабильные). Третий — шардирование: разбить одну map на N с отдельным мьютексом на каждый шард, распределять по hash(key) % N. Для большинства случаев первый вариант (map + RWMutex) — самый простой и достаточный.

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

Зачем нужен context в Go?