Middle — Middle+
Kako se vrši asinhroni rad strukture podataka Map?
sobes.tech АИ
Одговор од АИ
U Go, standardna struktura podataka map nije sigurna za istovremeni pristup iz više gorutina. Asinhroni (konkurentni) rad sa map zahteva dodatnu sinhronizaciju.
Za siguran rad sa map u konkurentnom okruženju obično se koriste:
- Muteksi (
sync.Mutexilisync.RWMutex) — obavijaju operacije čitanja i pisanja u blokade kako bi se izbegle trke. - Paket
sync.Map— specijalizovana, sigurna za niti implementacija mape, optimizovana za slučajeve sa velikim brojem gorutina i retkim promenama.
Primer sa sync.Map:
var m sync.Map
// Pisanje
m.Store("key", "value")
// Čitanje
if val, ok := m.Load("key"); ok {
fmt.Println(val)
}
// Brisanje
m.Delete("key")
Na ovaj način, asinhroni rad sa map u Go se postiže ili putem eksplicitne sinhronizacije ili korišćenjem sigurnih struktura iz standardne biblioteke.