Sobes.tech
Junior — Middle

Как да синхронизираме достъпа до споделен ресурс с помощта на структура Map и механизма Mutex?

sobes.tech AI

Отговор от AI

В Go за синхронизиране на достъпа до споделена структура Map обикновено се използва мьютекс (sync.Mutex), тъй като map не е безопасна за многопоточна употреба.

Пример:

import (
    "sync"
)

var (
    mu sync.Mutex
    sharedMap = make(map[string]int)
)

func writeToMap(key string, value int) {
    mu.Lock()           // заключва достъпа
    sharedMap[key] = value
    mu.Unlock()         // отключва
}

func readFromMap(key string) (int, bool) {
    mu.Lock()
    val, ok := sharedMap[key]
    mu.Unlock()
    return val, ok
}

По този начин, преди да прочетем или запишем в map, заключваме мьютекса, за да избегнем състезателни условия и да осигурим коректна работа в конкурентна среда.