Sobes.tech
Junior — Middle

Çox ipli mühitdə kartın təhlükəsiz girişini necə təmin etmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, çox ipli mühitdə xəritəyə (map) təhlükəsiz giriş üçün sinxronizasiya istifadə etmək lazımdır, çünki map çox ipli təhlükəsiz olmayan məlumat strukturu sayılır. Ən yaygın üsul, oxuma və yazma zamanı girişə bloklamaq üçün mutex (sync.Mutex və ya sync.RWMutex) istifadə etməkdir.

sync.RWMutex ilə nümunə:

import (
    "sync"
)

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

func read(key string) int {
    mu.RLock()         // oxuma üçün bloklama
    defer mu.RUnlock()
    return m[key]
}

func write(key string, value int) {
    mu.Lock()          // yazma üçün bloklama
    defer mu.Unlock()
    m[key] = value
}

Həmçinin, Go-da sync.Map tipi də mövcuddur, bu çox ipli təhlükəsiz xəritəni həyata keçirir və tez-tez oxuma əməliyyatları üçün optimallaşdırılıb. Əgər sərt tip yoxdursa və sadəlik istəyirsinizsə, istifadə edə bilərsiniz:

import "sync"

var m sync.Map

m.Store("key", 42)          // yazma
value, ok := m.Load("key")  // oxuma

Beləliklə, çox ipli mühitdə təhlükəsiz giriş üçün mutexlər və ya sync.Map istifadə edin.