Sobes.tech
Junior — Middle

Ako synchronizovať prístup ku spoločnému zdroju pomocou štruktúry Map a mechanizmu Mutex?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa na synchronizáciu prístupu ku spoločnej štruktúre Map zvyčajne používa mutex (sync.Mutex), pretože map nie je bezpečná pre viacvláknové prostredie.

Príklad:

import (
    "sync"
)

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

func writeToMap(key string, value int) {
    mu.Lock()           // zamkne prístup
    sharedMap[key] = value
    mu.Unlock()         // odomkne
}

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

Týmto spôsobom pred čítaním alebo zapisovaním do mapy zamkneme mutex, aby sme zabránili podmienkam súťaže a zabezpečili správnu funkciu v konkurenčnom prostredí.