Sobes.tech
Junior — Middle

Kā sinhronizēt piekļuvi koplietotajam resursam, izmantojot Map struktūru un Mutex mehānismu?

sobes.tech AI

Atbilde no AI

Go valodā, lai sinhronizētu piekļuvi kopīgai Map struktūrai, parasti izmanto mutex (sync.Mutex), jo map nav droša daudzprocesu darbībai.

Piemērs:

import (
    "sync"
)

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

func writeToMap(key string, value int) {
    mu.Lock()           // bloķē piekļuvi
    sharedMap[key] = value
    mu.Unlock()         // atbloķē
}

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

Tādējādi, pirms lasīšanas vai rakstīšanas mapē, mēs bloķējam mutex, lai novērstu sacensību apstākļus un nodrošinātu pareizu darbību konkurējošā vidē.