Junior — Middle
Bir neçə axınla eyni zamanda Map-ə yazarkən təhlükəsizliyi təmin etmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da standart xəritə (map) eyni vaxtda bir neçə goroutine tərəfindən yazılmağa qarşı təhlükəsiz deyil. Əgər bir neçə goroutine eyni zamanda map-ə yazırsa və sinxronizasiya edilməzsə, bu panikaya səbəb olar.
Eyni vaxtda yazma təhlükəsizliyini təmin etmək üçün:
- sync.Mutex və ya sync.RWMutex kimi mutex istifadə edə bilərsiniz, bu da map-ə girişə nəzarət edir.
- Ayrıca, sync.Map kimi xüsusi, çoxnüvəli təhlükəsiz məlumat strukturlarından istifadə edə bilərsiniz, bu, çoxnüvəli giriş üçün nəzərdə tutulub.
Mutex ilə nümunə:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Və ya sync.Map istifadə edin:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Beləliklə, eyni vaxtda yazma təhlükəsizliyi üçün sinxronizasiya istifadə edilməlidir.