Senior
Fərqli gorutinlərdən eyni zamanda bir xəritəyə yazmaq mümkündürmü? Nə baş verəcək?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, əlavə sinxronizasiya olmadan eyni map-ə müxtəlif gorutindən təhlükəsiz şəkildə yazmaq mümkün deyil. Standart map çoxluq təhlükəsiz deyil və eyni vaxtda yazma əməliyyatları panik (runtime panic) və ya məlumatların pozulmasına səbəb ola bilər.
Map-i çoxlu mühitdə təhlükəsiz istifadə etmək üçün:
- sync.Mutex və ya sync.RWMutex istifadə edərək girişə nəzarət etmək.
- sync.Map istifadə etmək, bu, xüsusi və çoxluq təhlükəsiz məlumat strukturudur.
Mutex ilə nümunə:
var (
m = make(map[string]int)
mu sync.Mutex
)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bu qoruma olmadan, proqram gözlənilmədən dayanabilir.