Sobes.tech
Junior — Middle

Xəritə məlumatlar quruluşundan təhlükəsiz şəkildə məlumat oxumaq mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da, xəritədən oxuma təhlükəsizdir, əgər həmin vaxt heç kim onu dəyişmir. Ancaq, paralel olaraq yazma (əlavə etmə, silmə və ya elementləri dəyişdirmə) baş verərsə, oxuma panikaya (iş vaxtı xətası) səbəb ola bilər.

Çox ipli mühitdə xəritədən təhlükəsiz oxuma üçün adətən istifadə olunur:

  • sync.RWMutex — xəritəni yazmaq üçün kilidləmək və paralel oxumağa imkan vermək üçün
  • sync.Map — xüsusi və çox ipli mühitlər üçün təhlükəsiz məlumat strukturu

RWMutex ilə nümunə:

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

func read(key string) (int, bool) {
    mu.RLock()
    defer mu.RUnlock()
    val, ok := m[key]
    return val, ok
}

func write(key string, val int) {
    mu.Lock()
    defer mu.Unlock()
    m[key] = val
}

Beləliklə, təhlükəsiz oxuma yazma ilə sinxronizasiya təmin olunduqda mümkündür.