Добавить новость
ru24.net
Все новости
Август
2024

Внутреннее устройство sync.Map, сравнение производительности с map + RWMutex

Привет, Хабр! Эта статья для тех, кто хочет понять, когда стоит использовать sync.Map, а когда достаточно обычной map с мьютексом.


В Каруне этот вопрос иногда возникал на код ревью, поэтому такая статья мне показалась полезной. TLDR: sync.Map лучше работает на задачах, где много операций чтения, и ключи достаточно стабильны.


Внутреннее устройство sync.Map


sync.Map — это потокобезопасная реализация мапы в Go, оптимизированная для определенных сценариев использования.


Основная структура sync.Map выглядит примерно так:


type Map struct {
    mu Mutex
    read atomic.Value // readOnly
    dirty map[interface{}]*entry
    misses int
}

type readOnly struct {
    m       map[interface{}]*entry
    amended bool
}

type entry struct {
    p unsafe.Pointer // *interface{}
}

Здесь мы видим несколько ключевых полей:

Читать дальше →



Moscow.media
Частные объявления сегодня





Rss.plus




Спорт в России и мире

Новости спорта


Новости тенниса
Арина Соболенко

Мирра Андреева проиграла Соболенко в 1/8 финала Australian Open






В Архангельской области более трёх тысяч жителей приняли участие в крещенских купаниях

Захарова назвала зверства ВСУ констатацией неонацистского нутра киевского режима

В Москве работница ресторана едва не зарезала бывшую коллегу ножом

От зависимости до невроза: почему просмотр коротких видео разрушает мозг