home.social

#syncmap — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #syncmap, aggregated by home.social.

  1. Внутреннее устройство 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{}
    } Здесь мы видим несколько ключевых полей:

    habr.com/ru/companies/karuna/a

    #syncMap #map #mutex #rwmutex

  2. Почему sync.Map — почти всегда плохая идея

    Привет, Хабр! Сегодня разбираемся, почему sync.Map — выглядит аппетитно, но почти всегда оказывается не тем, чем вы ожидали.

    habr.com/ru/companies/otus/art

    #golang #go #syncmap #потокобезопасность #многозадачность