Sobes.tech
Junior — Middle

Clasa Map asigură siguranța atunci când este utilizată într-un mediu multi-thread?

sobes.tech AI

Răspuns de la AI

În Go, tipul standard Map nu este sigur pentru utilizarea în medii multi-thread fără sincronizare suplimentară. Dacă mai multe goroutines citesc și scriu în Map în același timp fără protecție, acest lucru poate duce la condiții de cursă și panic.

Pentru a asigura siguranța în accesul concurent, se pot folosi:

  • Mutexuri (sync.Mutex sau sync.RWMutex) pentru blocarea accesului la Map.
  • Structuri specializate, precum sync.Map, concepute pentru acces concurent.

Exemplu de utilizare a sync.Map:

var m sync.Map
m.Store("key", "value")
value, ok := m.Load("key")
if ok {
    fmt.Println(value)
}

Astfel, Map-ul clasic nu asigură siguranța în multi-threading, dar există instrumente pentru a lucra în siguranță cu colecții asociative.