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