Sobes.tech
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.