Sobes.tech
Middle — Middle+

Çox iplikli mühitdə əlavə sinxronizasiya olmadan map konteynerinə təhlükəsiz yazma mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da standart xəritə (map) yazma üçün təhlükəsiz deyil. Əgər bir neçə goroutin eyni zamanda map-ə yazırsa və sinxronizasiya edilməzsə, bu, məlumatların yarışmasına və işləmə zamanı panikaya səbəb olacaq.

Çox ipli mühitdə map-ə təhlükəsiz yazmaq üçün aşağıdakıları istifadə etmək lazımdır:

  • sync.Mutex və ya sync.RWMutex girişə kilidləmək üçün;
  • sync.Map, standart kitabxanadan çox ipli təhlükəsiz xəritə tətbiqi.

sync.Mutex ilə nümunə:

var mu sync.Mutex
var m = make(map[string]int)

func safeWrite(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

Belə sinxronizasiya olmadan, map-ə yazmaq təhlükəsiz deyil.